Как изменить схему нескольких таблиц PostgreSQL за одну операцию?
У меня есть база данных PostgreSQL 9.1 со 100 или около того таблицами, которые были загружены в "общедоступную" схему. Я хотел бы переместить эти таблицы (но не все функции в "public" ) на схему "данных".
Я знаю, что я могу использовать следующее для перемещения по 1 таблице за раз.
ALTER TABLE [tablename] SET SCHEMA [new_schema]
Можно ли переместить все таблицы в новую схему за одну операцию? Если да, то каков был бы наиболее эффективный способ выполнить эту задачу?
Ответы
Ответ 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;
$$;