如何在一个操作中更改多个PostgreSQL表的模式?

时间:2012-04-18 22:05:44

标签: postgresql schema migrate postgresql-9.1

我有一个PostgreSQL 9.1数据库,其中包含100个左右的表,这些表被加载到“公共”模式中。我想将这些表(但不是'public'中的所有函数)移动到'data'模式。

我知道我可以使用以下内容一次移动1个表。

ALTER TABLE [tablename] SET SCHEMA [new_schema]

是否可以在一次操作中将所有表移动到新架构?如果是这样,那么完成这项任务的最有效方法是什么?

1 个答案:

答案 0 :(得分:43)

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;
$$;