Bro*_*oks 3 postgresql postgresql-9.4 pg-restore
我有一个大型(> 700GB)PostgreSQL 数据库。我正在将其导入 AWS RDS。我意识到有些模块会导致问题,我们正在单独处理这些问题,所以现在,我只是致力于将数据迁移到 RDS。
我正在使用 pg_dump 和 pg_restore 9.4.5 来回迁移 PostgreSQL 9.4.5。
传输几个小时后(pg_dump 到 pg_restore 与目录格式),我检查了日志并意识到有一件我不知道的 Postgres 用户拥有的东西(可能是一张表?)。
我在 toc.dat 文件中找到了进行调用的行并解压了 .dat.gz 文件,发现它只包含“\”。(无引号)在其中。
所以,我的问题是,除了停止传输并重新开始之外,有没有一种方法可以在导入完成后简单地传输该特定命令和文件?
以下是相关详情。
pg_dump 命令:
pg_dump -h localhost -p 5432 -d DBNAME -U USERNAME -F d -f /mnt/backup -j 7
Run Code Online (Sandbox Code Playgroud)
pg_restore 命令:
pg_restore --dbname=DBNAME --no-tablespaces --host=HOSTNAME --port=5432 --username=USERNAME --verbose -F d -j 6 /mnt/backup
Run Code Online (Sandbox Code Playgroud)
toc.dat 文件中的部分。我意识到目录格式以二进制格式输出,但我希望这是可识别的这一事实意味着有一种方法可以返回并修复该错误。
^@^F^@^@^@public^A^A^@^@^@^@^H^@^@^@postgres^@^E^@^@^@false^@^C^@^@^@173^A^A^@^@^@^@ ^@^@^@10393.dat^@W<^@^@^@^A^@^@^@^@^A^@^@^@0^@^E^@^@^@26106^@^N^@^@^@search_name_66^@
^@^@^@TABLE DATA^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@]^@^@^@COPY search_name_66 (place_id, search_rank, address_rank, name_vector, centroid) FROM stdin;
Run Code Online (Sandbox Code Playgroud)
pg_restore 报告的实际错误:
pg_restore: [archiver (db)] Error from TOC entry 10393; 0 16787 TABLE DATA spatial_ref_sys postgres
Run Code Online (Sandbox Code Playgroud)
我在 toc.dat 文件中找到了进行调用的行并解压了 .dat.gz 文件,发现它只包含“\”。(无引号)在其中。
\.
不是命令,它标志着 COPY 流中数据的结束。如果转储中的相应数据文件仅包含该文件,则源表为空。
另请注意,您可以pg_restore --list
以目录或压缩格式列出转储的内容。
您还可以将单个表的内容恢复到 SQL 文件而不是目标数据库中,然后在方便时修改该文件,并将其播放到目标中。有关更多信息,请参阅pg_restore 联机帮助页。
归档时间: |
|
查看次数: |
10968 次 |
最近记录: |