我需要使用 PostgreSQL 和 psql 工具将一个表(仅数据)导出到另一个名称不同但结构相同的表。我还想从源表中导出某些记录和几个字段。
有人能给我举个例子吗?
谢谢!
答案1
好的!这是我的 hack!这是一种“bash”方法!
注一:
<TARGET_DB_NAME>
-> 假设相同桌子源和目标中的名称!
<TARGET_TABLE_NAME>
-> 假设相同数据库源和目的地的名称!
注二:我使用“fbcf111499a6467ba”作为目标表的一个不太可能的名称。目的是避免“sed”执行过程中出现问题。
在“源机器”/“数据库”上执行
cd /tmp
sudo -u postgres psql <TARGET_DB_NAME> -c "CREATE TABLE fbcf111499a6467ba AS SELECT column_a, column_b, column_c FROM <TARGET_TABLE_NAME> WHERE <YOUR_SEARCH_QUERY>;"
sudo -u postgres pg_dump --file "/tmp/<TARGET_TABLE_NAME>.sql" --table=fbcf111499a6467ba --data-only --column-inserts "<TARGET_DB_NAME>"
sed -i 's/INSERT INTO fbcf111499a6467ba (/INSERT INTO <TARGET_TABLE_NAME> (/g' /tmp/<TARGET_TABLE_NAME>.sql
sudo -u postgres psql <TARGET_DB_NAME> -c "DROP TABLE fbcf111499a6467ba;"
在“目标机器”/“数据库”上执行
cd /tmp
sudo -u postgres psql <TARGET_DB_NAME> < /tmp/<TARGET_TABLE_NAME>.sql