如何使用SQL复制csv文件
我需要在我的数据库中导入csv。 我在sql中创建了一个执行导入的函数:如何使用SQL复制csv文件,sql,postgresql,csv,import,copy,Sql,Postgresql,Csv,Import,Copy,我需要在我的数据库中导入csv。 我在sql中创建了一个执行导入的函数: CREATE OR REPLACE FUNCTION import_match_csv(filename varchar(500), username varchar(500)) RETURNS VOID AS $$ BEGIN CREATE TABLE match_import (....)); COPY match_import FROM 'filename' DELIMITER ',' CS
CREATE OR REPLACE FUNCTION import_match_csv(filename varchar(500), username varchar(500)) RETURNS VOID AS $$
BEGIN
CREATE TABLE match_import (....));
COPY match_import FROM 'filename' DELIMITER ',' CSV HEADER;
INSERT ....
DROP TABLE match_import;
END;
$$ LANGUAGE plpgsql;
在psql提示符中调用函数写入
SELECT * FROM import_match_csv('/Users/benny/Desktop/match.csv', 'benny');
我得到一个错误:
错误:错误:无法打开文件名进行读取:没有这样的文件或目录
提示:复制自指示PostgreSQL server进程读取文件。您可能需要一个客户端工具,如psql的\copy。
上下文:SQL语句复制匹配\u从“文件名”分隔符、“CSV头”导入
PL/pgSQL函数导入\匹配\ CSV字符变化,SQL语句第33行字符变化
您必须使用动态SQL,因为COPY不支持参数:
EXECUTE format(
'COPY match_import FROM %L (FORMAT ''csv'', DELIMITER '','', HEADER)',
filename
);
在COPY语句中删除文件名周围的单引号,此时它只是一个字符串文字。@OTTA如果删除单引号,文件名处会出现sintax错误