Postgres-用于创建脚本以在给定表

时间:2016-12-16 12:02:58

标签: sql postgresql

我有一个包含很多表格的数据库。其中一些名称以“mytable_”开头。那些表有一些索引。现在我需要将这些索引也移动到具有类似表的不同服务器。

我想有一个脚本,它将创建我本地服务器上给定表中的所有索引。

另外我想这样做,如果已经创建了这个索引,它就不会崩溃。

如何在Postgres(pg admin)

中完成

1 个答案:

答案 0 :(得分:6)

您可以使用pg_get_indexdef()来额外添加所有索引:

select replace(pg_get_indexdef(format('%I.%I', schemaname, indexname)::regclass), ' INDEX ', ' INDEX IF NOT EXISTS ')||';' as ddl
from pg_indexes
where schemaname = 'public'
  and tablename like 'mytable\_%';

replace用于“注入”IF NOT EXISTS,以便如果目标数据库中已存在此索引,则语句不会失败。

将该查询的结果假脱机到文件。