我如何使用PostgreSQL代码片段?

时间:2010-11-03 05:28:16

标签: postgresql schema code-snippets

我正在尝试找到一种以不同名称复制架构的方法。有many ways来执行此操作。一种方法是在命令行上工作,但由于移动部分(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');

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用PSQL控制台。登录并复制粘贴脚本或创建文本文件并告诉PSQL读取它。