我有一个相当大的 .txt 文件 ~9gb,我想将此 txt 文件加载到 postgres 中。第一行是标题,后面是所有数据。如果我 postgres 直接复制数据,标题将导致数据类型与我的 postgres 表不匹配的错误,所以我需要以某种方式将其删除。
示例数据:ProjectId,MailId,MailCodeId,prospectid,listid,datemailed,amount,donated,zip,zip4,VectorMajor,VectorMinor,packageid,phase,databaseid,amount2
15,53568419,89734,219906,15,2011-05-11 00:00:00,0,0,90720,2915,NonProfit,POLICY,230,3,1,0
16,84141863,87936,164657,243,2011-03-10 00:00:00,0,0,48362,2523,NonProfit,POLICY,1507,5,1,0
16,81442028,86632,15181625,243,2011-01-19 00:00:00,0,0,11501,2115,NonProfit,POLICY,1508,2,1,0
虽然 postgres 的 COPY 函数具有可以忽略第一行的“header”设置,但它仅适用于 csv 文件:
copy training from 'C:/testCSV.csv' DELIMITER ',' csv header;
当我尝试在我的 txt 文件上运行上面的代码时,出现错误:
copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header
ERROR: unquoted newline found in data
HINT: Use quoted CSV field to represent newline.
我尝试添加“quote”和“escape”属性,但该命令似乎不适用于 txt 文件:
copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header quote as E'"' escape as E'\\N';
ERROR: COPY escape must be a single one-byte character
或者,我考虑过运行 java 或创建一个单独的临时表来删除第一行……但这些解决方案既费时又费时。我需要加载 9gb 的数据才能删除第一行标题......是否有其他解决方案可以轻松删除 txt 文件的第一行,以便我可以将数据加载到我的 postgres 数据库中?