【发布时间】:2016-12-29 06:42:41
【问题描述】:
我有一个 30 GB 的制表符分隔文本文件,其中包含超过 1 亿行,当我想使用 \copy 命令将此文本文件导入 PostgreSQL 表时,某些行会导致错误。如何在导入到 postgresql 时忽略这些行并记录被忽略的行?
我通过 SSH 连接到我的机器,所以我无法使用 pgadmin!
在导入之前编辑文本文件非常困难,因为很多不同的行都有不同的问题。如果有一种方法可以在导入之前逐一检查行,然后对各个行运行 \copy 命令,那将很有帮助。
下面是生成表格的代码:
CREATE TABLE Papers(
Paper_ID CHARACTER(8) PRIMARY KEY,
Original_paper_title TEXT,
Normalized_paper_title TEXT,
Paper_publish_year INTEGER,
Paper_publish_date DATE,
Paper_Document_Object_Identifier TEXT,
Original_venue_name TEXT,
Normalized_venue_name TEXT,
Journal_ID_mapped_to_venue_name CHARACTER(8),
Conference_ID_mapped_to_venue_name CHARACTER(8),
Paper_rank BIGINT,
FOREIGN KEY(Journal_ID_mapped_to_venue_name) REFERENCES Journals(Journal_ID),
FOREIGN KEY(Conference_ID_mapped_to_venue_name) REFERENCES Conferences(Conference_ID));
【问题讨论】:
-
好的。标志已收回。
-
@dmfay 在导入之前很难编辑文本文件,因为很多不同的行都有不同的问题。如果有一种方法可以在导入之前逐一检查行,然后对各个行运行 \copy 命令,那将很有帮助。
标签: sql postgresql text