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文件中。
如果可能,请提供一个基本示例。感谢。
答案 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