我使用COPY ... FROM ... WITH CSV...
语法但是我发现文件名很容易从数据库中其他地方存储的值中导出,并且在脚本中始终更改它是一个维护噩梦。
是否可以SELECT
文件名,即:
COPY ... FROM (SELECT filename FROM mytable WHERE x=1) WITH CSV...
谢谢,p。
答案 0 :(得分:1)
不,你不能,你不能使用子查询来获取文件名。
但是,您可以在存储过程中使用动态SQL。从版本9.0开始,您可以使用DO:
DO
$$
DECLARE
_file TEXT;
BEGIN
SELECT filename INTO _file FROM mytable WHERE x=1;
EXECUTE 'COPY ... FROM ' || _file || ' WITH CSV...;';
RAISE INFO 'File % imported', _file;
END;
$$;