我有以下场景,我有一个名为 A 的模式和一个名为 B 的模式。两者都在同一个数据库中,都包含相同的表,只有在模式 B 中它没有内容,因为我用语句截断了表TRUNCATE
。
我尝试通过以下命令使用pg_dump
and应用程序。pg_restore
pg_dump --file "table.sql" --username "user" --no-password --verbose --format=p --data-only --table "schemaA.tablename" "db"
获取包含以下语句的 SQL 脚本:
COPY schemaA.tablename (column1, column2...) FROM STDIN;
//data
我尝试过改变这一点
我尝试将其更改COPY
为schemaB
但无济于事,FROM STDIN
我假设的声明是为什么pg_restore
通过文件获取数据并且有条目STDIN
,我不能这样做吗?因为进行更改不起作用。
如果这是不可能的,我唯一能想到的就是执行以下操作:
INSERT INTO schemaB.tablename
SELECT * FROM schemaA.tablename;
有很多数据,我不知道建议这样做到什么程度,最好的步骤是什么?
谢谢!!!
您无法将 a 恢复
pg_dump
到不同的架构。你的
INSERT INTO ... SELECT ...
解决方案很好。另一种方法是将COPY ... TO
第一个表的内容写入文件并将COPY ... FROM
其加载到另一个表中。