我有一个包含很多表的数据库.其中一些名称以"mytable_"开头.那些表有一些索引.现在我需要将这些索引也移动到具有类似表的不同服务器.
我想有一个脚本,它将创建我本地服务器上给定表中的所有索引.
另外我想这样做,如果已经创建了这个索引,它将不会崩溃.
如何在Postgres中完成(pg admin)
您可以使用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\_%';
Run Code Online (Sandbox Code Playgroud)
本replace是用来"注入"了IF NOT EXISTS,这样,如果这样的指标已经出现在目标数据库中的语句也不会失败.
只需将该查询的结果假脱机到文件即可.