从源自select查询的源复制?

时间:2012-02-08 00:47:14

标签: postgresql

我使用COPY ... FROM ... WITH CSV...语法但是我发现文件名很容易从数据库中其他地方存储的值中导出,并且在脚本中始终更改它是一个维护噩梦。

是否可以SELECT文件名,即:

COPY ... FROM (SELECT filename FROM mytable WHERE x=1) WITH CSV...

谢谢,p。

1 个答案:

答案 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;
$$;