是否可以通过使用循环编写导出不同表的PostgreSQL查询?

时间:2014-08-05 15:04:47

标签: sql postgresql loops

我想导出几个表,但是每个表都是在不同的条件下创建的,并且具有不同的文件名。例如,可以在某个id等于x的条件下创建表,并将该表导出到名为table_x.txt的文件中。这可以通过使用以下(简单)查询来完成。

COPY(
SELECT *
FROM table
WHERE table.id=x
)
TO '/home/table_x.txt'
;

然而,我想生成一个循环,为不同的x值执行此查询,而不是这样做大约100次。这可能吗?我不需要在我的数据库中保存不同的表,我只想将它们导出到不同的文本文件。

1 个答案:

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