我有一个PostgreSQL 9.1数据库,其中大约有100个表被加载到“公共”模式中。我希望将这些表(但不是“public”中的所有函数)移动到“data”模式。
我知道我可以使用下面的方法一次移动一张桌子。
ALTER TABLE [tablename] SET SCHEMA [new_schema]
是否可以在一次操作中将所有表移动到新的模式?如果是这样,完成这项任务的最有效方法是什么?
发布于 2012-04-19 16:29:01
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;
$$;
https://stackoverflow.com/questions/10218768
复制相似问题