请参见下面的编辑。
我对Postgres非常陌生,所以如果我对这个问题不太满意,我们深表歉意。另外,我已经花了几个小时寻找没有运气的解决方案,所以如果在某个地方被覆盖,再次道歉。
我有一个文本文件,我需要导入到Postgres 10.8中,它是201列,大约150m行。大小约为2.5GB。我创建的表将每一列分配为文本,以下是我导入.txt文件的方式:
COPY cl_all
FROM 'C:\Program Files\PostgreSQL\10\cl_1.txt'
WITH (delimiter '|');
当我尝试导入时,我得到以下信息:
错误:缺少列数据(以及对最后一列的引用)
上下文:COPY cl_all,第247514行:“ 9240410843 || 09003 | 000536805 | 1 | 09003000536805 001 | 536805 | 090800020 ...”
下面是有问题的行247514:
9240410843||09003|000536805|1|09003000536805 001|536805|09080002004|ENFI-000066-000000-000065|ENFI 000066 000065 000000 000000|1|ENFI-000066-000065|4808002020|||||ENFIELD|226|||ENFI|||||||163||1-FAMILY RESIDENCE||R33|10|1|||XXX|XXX|XXX|XXX|18||||XXX|XXX|||XXX|XXX|060824404|XXX|C039||||||||XXX|XXX|XXX|XXX|XXX|XXX||||||||||||||O|18||||XXX|RD|||XXX|XXX|060824404|C039||110810|46660|64150|A|110810|46660|64150|||||||4100.00|2018|2018|||||||19971231|42404||74981|001033000093|DD|19970228|19970228|97000.00|F|1|||Y|XXX \|95961.00||CNV||||||002418|FLEET MTG CORP||||||0.2800|12197|1954||3|5|1.00||1|||||001||BFL|||AVE||VIN||||||||FAH||||||002|G00||1.00|RAN|1|960|L||960||2570||200|||||||
现在将这一行与文本文件中的其他行条目进行比较,我注意到第131列“ \”中的最后一个字符可能是有问题的项目,因此我只删除了“ \”字符,然后将该行导入即可,但是每隔250k左右的行,在另一列中也会出现类似的问题,“ \”给出相同的错误。
有没有一种方法可以将该文本文件导入Postgres,而不必先删除这些令人讨厌的“ \”字符?我希望有一种方法可以简单地导入此文本文件,其中包括以某种方式包含为文本的“ \”?谢谢。
编辑: 我试图简单地回答这个问题。
我想将以下test.txt文件导入Postgres:
col_1|col_2
A2|B2
A3\|B3
A4|B4
我尝试了以下操作:
COPY test
FROM 'C:\Program Files\PostgreSQL\10\test.txt'
WITH (delimiter '|');
我收到以下错误:
ERROR: missing data for column "col_2"
CONTEXT: COPY test, line 3: "A3\|B3"
有人能想到一种导入此test.txt文件的方法吗?谢谢!