かなり大きな .txt ファイル ~9gb があり、この txt ファイルを postgres にロードしたいと考えています。最初の行はヘッダーで、その後にすべてのデータが続きます。データを直接postgres COPYすると、ヘッダーはデータ型が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 関数には、最初の行を無視できる「ヘッダー」設定がありますが、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.
「引用」および「エスケープ」属性を追加しようとしましたが、コマンドは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 のデータをロードする必要があります...データを postgres データベースにロードできるように、txt ファイルの最初の行を簡単に削除する他のソリューションはありますか?