postgresql 如何将schema移动到其他目录

anauzrmj  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(130)

Postgres 13.2数据库包含名为company2的模式,该模式包含表和索引,位于g:\Program Files\Postgresql\13\data目录中。
服务器还具有驱动器I:
如何将表和索引从company2模式移动到I:drive?
使用
PostgreSQL 13.2,由Visual C++ build 1914编译,64位
在Windows Server上。

m1m5dgzv

m1m5dgzv1#

您将不得不在system catalogs上的pl/pgsql循环中运行一些动态sql execute,以分别为内部的所有内容发出alter...set tablespace

select * from pg_tables where schemaname='company2';

do $do_block$
declare record_ record;
begin
for record_ in select schemaname,tablename from pg_tables 
               where coalesce(tablespace,'')<>'new_tablespace'
               and schemaname='company2'
  loop
  execute format ('alter table %I.%I set tablespace new_tablespace',record_.schemaname,record_.tablename);
end loop;
end $do_block$;

select * from pg_tables where schemaname='company2';

字符串
| schemaName| tableName|桌主|表空间|hasindexes|哈斯鲁尔斯|哈斯特里格斯|行安全|
| --|--|--|--|--|--|--|--|
| 公司2|测试|Postgres| * 空 *| 不|F| F| F|
| schemaName| tableName|桌主|表空间|hasindexes|哈斯鲁尔斯|哈斯特里格斯|行安全|
| --|--|--|--|--|--|--|--|
| 公司2|测试|Postgres|新闻中心|不|F| F| F|
外部数据 Package 器允许批量导入包含所有内容的模式,特权系统允许批量授予/撤销整个模式和其中的所有内容,drop可以级联到模式中的所有内容。通过扩展,期望批量切换操作是合理的-不幸的是,没有一个。

相关问题