postgresql - 如何使用游标或select语句生成多个DML语句

时间:2015-05-30 15:31:34

标签: postgresql postgresql-9.3

postgres的新手,我使用的是Postgresql 9.3。有没有办法用postgresql生成一个包含多个DML语句的文件?

例如,我想选择表名为'_foo%'的表名,然后将所有这些表重命名为'_bar%'。我是否需要在光标中执行此操作,还是可以在选择语句中执行此操作? (就像在Oracle中一样)

ALTER TABLE RENAME tst1_foo TO tst1_bar;
ALTER TABLE RENAME tst2_foo TO tst2_bar;
ALTER TABLE RENAME tst3_foo TO tst3_bar; 

我想将它们打印到.sql文件中。

如果可能,请提供一个基本示例。感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用psql和pg_tables系统视图。将输出设置为未对齐模式:

\a

将输出设置为仅显示行:

\t on

将输出发送到您的文件:

\o yourfile.sql

运行查询:

SELECT 'ALTER TABLE RENAME ' || tablename || ' TO ' ||
  REGEXP_REPLACE ( tablename, '_foo$', '_bar' ) || ';'
FROM pg_tables
WHERE tablename LIKE '%_foo';

关闭文件:

\o

和/或关闭psql:

\q