我需要将表的内容从一个数据库复制到另一个数据库,该数据库具有当前为空的相同表。
我打算从旧表中转储表数据,然后将其简单地导入到新数据库中的空表中。但是,我在使用 pg_dump 时遇到了一些我不理解的行为。
我尝试使用以下命令将表数据转储到文件中:
pg_dump -a -t '"my_table"' my_database > /tmp/my_table.sql
这行得通,但是如果我像这样查看表格,我只会得到 8 条记录,并且表格中有超过 1000 条记录:
SELECT * FROM my_table;
所以,我尝试使用 COPY 命令生成一个 .csv 文件,我看到了类似的行为:
COPY my_table TO '/tmp/my_table.csv' WITH CSV HEADER;
我得到与 pg_dump 相同的 8 条记录。但是,与:
COPY (SELECT * FROM my_table) TO '/tmp/my_table.csv' WITH CSV HEADER;
我得到了所有 1266 条记录。
我会假设这些命令都应该返回相同的数据,但显然,我错了。有什么区别?