我有一个30 GB的制表符分隔文本文件,其中有超过1亿行,当我想使用\ copy命令将此文本文件导入到PostgreSQL表中时,有些行会导致错误。如何忽略这些行,并在导入到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));
确定。标志缩回。 – MYGz
[如何用psql \ copy元命令忽略错误]的可能重复(http://stackoverflow.com/questions/36634360/how-to-ignore-errors-with-psql-copy-meta-command) – dmfay
@ dmfay很难在导入之前编辑文本文件,因为很多不同的行有不同的问题。如果存在一种方法在导入之前逐一检查行,然后针对各行运行\ copy命令,这将会有所帮助。 –