方法一:使用pg_dump仅导出目标索引结构
如果你需要把源库的索引结构复制到另一个库,可以使用pg_dump工具提取 DDL:
- 导出源库中某个表或整个库的索引定义:
bash
pg_dump -h 源主机 -U 用户名 -d 源数据库 -t 表名 --schema-only | grep -i "create index" > indexes.sql请谨慎使用此类代码。
(注:也可以导出整个库的架构pg_dump -d source_db -s -O -x > schema.sql,然后从中挑选索引语句。)
- 在目标库中执行生成的 SQL:
bash
psql -h 目标主机 -U 用户名 -d 目标数据库 -f indexes.sql请谨慎使用此类代码。
方法二:使用 Python 或 SQL 动态生成同步语句
如果你想在同一个数据库的不同表之间,或通过程序对比同步,可以查询系统表pg_indexes,动态生成CREATE INDEX语句。
查询源表索引的 SQL 示例:
sql
SELECT indexdef || ';' FROM pg_indexes WHERE schemaname = 'public' AND tablename = '源表名';请谨慎使用此类代码。
将查询出来的内容复制到目标库执行即可。如果要比对两边差异,可以通过pg_indexes分别获取两个库的索引列表,对比indexname和indexdef是否一致。