【发布时间】:2020-01-06 12:12:01
【问题描述】:
我需要在我的数据库中导入一个 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 ',' CSV HEADER;
INSERT ....
DROP TABLE match_import;
END;
$$ LANGUAGE plpgsql;
调用写在psql提示符下的函数
SELECT * FROM import_match_csv('/Users/benny/Desktop/match.csv', 'benny');
我得到错误:
错误:错误:无法打开文件“文件名”进行阅读:没有这样的文件或目录 提示:COPY FROM 指示 PostgreSQL 服务器进程读取文件。您可能需要一个客户端工具,例如 psql 的 \copy。 上下文:SQL 语句“COPY match_import FROM 'filename'DELIMITER','CSV HEADER” PL/pgSQL 函数 import_match_csv(character varying,character varying) SQL 语句第 33 行
【问题讨论】:
-
在 COPY 语句中删除文件名周围的单引号,它现在只是一个字符串文字。
-
@OTTA 如果我去掉单引号,我会在文件名处得到一个 sintax 错误
标签: sql postgresql csv import copy