我想导出几个表,但是每个表都是在不同的条件下创建的,并且具有不同的文件名。例如,可以在某个id等于x的条件下创建表,并将该表导出到名为table_x.txt的文件中。这可以通过使用以下(简单)查询来完成。
COPY(
SELECT *
FROM table
WHERE table.id=x
)
TO '/home/table_x.txt'
;
然而,我想生成一个循环,为不同的x值执行此查询,而不是这样做大约100次。这可能吗?我不需要在我的数据库中保存不同的表,我只想将它们导出到不同的文本文件。
答案 0 :(得分:0)
您可以使用以下内容:
DO $$
DECLARE r record;
BEGIN
FOR r IN
SELECT id FROM id_list
LOOP
COPY(
SELECT *
FROM table
WHERE table.id=r.id
)
TO '/home/table_'||r.id||'.txt';
END LOOP;
END $$;
这是一个匿名的PL / SQL函数,它将遍历id
中的SELECT id FROM id_list
并为每个id执行COPY
。