【问题标题】:How do I use PostgreSQL code snippets?如何使用 PostgreSQL 代码片段?
【发布时间】:2011-05-04 07:43:41
【问题描述】:

我正在尝试找到一种方法来以不同的名称复制架构。有manyways 可以做到这一点。一种方法是在命令行上工作,但由于移动部件(what user am I running as?),它开始变得复杂。

如果我可以简单地调用数据库中的一个函数,那就完美了。那是我看到this page的时候。


CREATE OR REPLACE FUNCTION clone_schema(source_schema text, dest_schema text) RETURNS void AS
$BODY$
DECLARE 
  objeto text;
  buffer text;
BEGIN
    EXECUTE 'CREATE SCHEMA ' || dest_schema ;


    FOR objeto IN
        SELECT table_name::text FROM information_schema.TABLES WHERE table_schema = source_schema
    LOOP        
        buffer := dest_schema || '.' || objeto;
        EXECUTE 'CREATE TABLE ' || buffer || ' (LIKE ' || source_schema || '.' || objeto || ' INCLUDING CONSTRAINTS INCLUDING INDEXES INCLUDING DEFAULTS)';
        EXECUTE 'INSERT INTO ' || buffer || '(SELECT * FROM ' || source_schema || '.' || objeto || ')';
    END LOOP;

END;
$BODY$
LANGUAGE plpgsql VOLATILE;
Execution is simple:
SELECT clone_schema('old_schema','new_schema');

但是,我不知道如何安装这些 sn-ps。 我该怎么做?它还告诉你“只记得创造语言”,但我不知道那是什么。

提前致谢!

【问题讨论】:

    标签: postgresql schema code-snippets


    【解决方案1】:

    您为此使用PSQL 控制台。要么登录并复制粘贴脚本,要么创建一个文本文件并告诉 PSQL 读取它。

    【讨论】:

    • 谢谢。我想这样做的原因是因为我已经连接到我的应用程序中的数据库。我觉得退出应用程序来完成这项任务有点臭。此外,我还捎带了应用程序必须连接到数据库的逻辑。对于其他人,您可以通过以下方式创建我所要求的语言:goo.gl/uPREf
    • 创建或替换函数只需运行一次,然后从应用中调用该函数。
    猜你喜欢
    • 2015-07-09
    • 2021-06-19
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多