2016-12-16 27 views
1

我有一个数据库中有很多表。其中一些名称以“mytable_”开头。那些表有一些索引。现在我需要将这些索引也移动到具有相似表格的不同服务器。Postgres脚本创建一个脚本来创建给定表上的现有索引

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

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

如何能将它的Postgres(PG管理员)

回答

2

您可以使用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从而使语句不会失败,如果这样的索引已经存在于目标数据库中。

只是将该查询的结果后台打印到文件中。