提问人:Nano_Watcher 提问时间:3/5/2023 更新时间:3/5/2023 访问量:128
如何在postgreSQL过程中从tsv文件导入数据?
How to import data from tsv file in postgreSQL procedure?
问:
我有一个程序:
CREATE OR REPLACE PROCEDURE import(IN tablename varchar, IN path text, IN separator char) AS $$
BEGIN
EXECUTE format('COPY %s FROM ''%s'' DELIMITER ''%s'' CSV HEADER;', tablename, path, separator);
END;
$$ LANGUAGE plpgsql;
我是这样称呼的:CALL import('transactions', '/home/vladimir/Desktop/RetailAnalitycs_v1.0/datasets/Transactions.tsv','\t');
此选项适用于 macOS,但不适用于 linux,可能是什么原因?
产生以下错误:[58P01] ERROR: could not open file "/home/vladimir/Desktop/RetailAnalitycs_v1.0/datasets/Transactions.tsv" for reading: No such file or directory Подсказка: COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
但我 100% 确定文件的路径是正确的。
我尝试使用不同的分隔符,重写了程序,询问了 chatgpt。
答: 暂无答案
评论
/home/vladimir/ ...
COPY
作为服务器用户工作,并从其角度工作。显然,服务器无法到达 Docker 容器外部以访问路径。您需要将文件移动到服务器可以访问的路径。"/home/vladimir/Desktop ...