Как использовать фрагменты кода PostgreSQL? - PullRequest
1 голос
/ 03 ноября 2010

Я пытаюсь найти способ скопировать схему под другим именем. Есть много способов сделать это. Одним из способов является работа в командной строке, но она усложняется из-за движущихся частей ( от имени какого пользователя я работаю? ).

Если бы я мог просто вызвать функцию в базе данных, это было бы идеально. Вот тогда я увидел эту страницу .


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 Ответ

1 голос
/ 03 ноября 2010

Для этого вы используете консоль PSQL . Войдите в систему и скопируйте, вставьте скрипт или создайте текстовый файл и попросите PSQL прочитать его.

...