【发布时间】:2014-04-23 18:54:35
【问题描述】:
我需要将表的内容从一个数据库复制到另一个具有相同表的数据库,该表当前为空。
我打算从旧表中转储表数据,然后简单地将其导入到新数据库中的空表中。但是,我在使用 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 条记录。
我会假设这些命令都应该返回相同的数据,但显然,我错了。有什么区别?
【问题讨论】:
-
这太疯狂了。你能显示输出吗?
-
/tmp/my_table.sql中有多少条记录?
标签: sql pg-dump postgresql-9.0