PostgreSQL - 将一个表导出到另一个具有不同名称但相同结构的表

PostgreSQL - 将一个表导出到另一个具有不同名称但相同结构的表

我需要使用 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

相关内容