【问题标题】:postgresql - how to use a cursor or select statement to generate mulitple DML statementspostgresql - 如何使用游标或选择语句生成多个 DML 语句
【发布时间】:2015-05-30 15:31:33
【问题描述】:

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

例如,我想选择表名,其中表名如'_foo%',然后将所有这些表重命名为'_bar%'。我需要在 光标 中执行此操作,还是可以在 select 语句 中执行此操作? (就像在 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 文件中。

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

【问题讨论】:

    标签: postgresql postgresql-9.3


    【解决方案1】:

    您可以使用 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
    

    【讨论】:

    • 完美。这就是我想要的。谢谢!
    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多