Подтвердить что ты не робот

Как изменить схему нескольких таблиц PostgreSQL за одну операцию?

У меня есть база данных PostgreSQL 9.1 со 100 или около того таблицами, которые были загружены в "общедоступную" схему. Я хотел бы переместить эти таблицы (но не все функции в "public" ) на схему "данных".

Я знаю, что я могу использовать следующее для перемещения по 1 таблице за раз.

ALTER TABLE [tablename] SET SCHEMA [new_schema]

Можно ли переместить все таблицы в новую схему за одну операцию? Если да, то каков был бы наиболее эффективный способ выполнить эту задачу?

4b9b3361

Ответ 1

DO выполнит трюк:

DO
$$
DECLARE
    row record;
BEGIN
    FOR row IN SELECT tablename FROM pg_tables WHERE schemaname = 'public' -- and other conditions, if needed
    LOOP
        EXECUTE 'ALTER TABLE public.' || quote_ident(row.tablename) || ' SET SCHEMA [new_schema];';
    END LOOP;
END;
$$;