不同 db 同步表数据。忽略自增id
#!/bin/bash
table_name='xxx'
db_name='xxx'
# 通过 sql 导出数据
psql -U postgres -d $db_name -c "COPY (SELECT * FROM $table_name) TO '/var/lib/postgresql/data/$table_name.csv' CSV HEADER;"
# 前置删除中间表
psql -U postgres -d $db_name -c "drop table if EXISTS tmp_$table_name;"
# 创建中间表
psql -U postgres -d $db_name -c "CREATE table tmp_$table_name AS SELECT * FROM $table_name LIMIT 0;"
# 数据导入中间表
psql -U postgres -d $db_name -c "COPY tmp_$table_name FROM '/tmp/$table_name.csv' CSV HEADER;"
# 删除 id 列(这里是自增id 避免 id 冲突)
psql -U postgres -d $db_name -c "ALTER TABLE tmp_$table_name DROP COLUMN id;"
# 中间表导入最终结果表
psql -U postgres -d $db_name -c "insert into $table_name select nextval('${table_name}_id_seq') AS id, * FROM tmp_$table_name"