我有一个包含很多表格的数据库。其中一些名称以“mytable_”开头。那些表有一些索引。现在我需要将这些索引也移动到具有类似表的不同服务器。
我想有一个脚本,它将创建我本地服务器上给定表中的所有索引。
另外我想这样做,如果已经创建了这个索引,它就不会崩溃。
如何在Postgres(pg admin)
中完成答案 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
,以便如果目标数据库中已存在此索引,则语句不会失败。
将该查询的结果假脱机到文件。