web-dev-qa-db-ja.com

Amazon Redshift-CSVからのコピー-行内の単一の二重引用符-CSVエラーの無効な引用符のフォーマット

S3からRedshiftにCSVファイルをロードしています。このCSVファイルは、PageUrlを含む分析データです(たとえば、クエリ文字列内にユーザー検索情報が含まれる場合があります)。

たとえば、14インチのおもちゃのページがある場合、PageUrlには以下が含まれます。

http://www.mywebsite.com/a-14 "-toy/1234.html

Redshiftは、二重引用符で終了することを想定しているため、当然これを処理できません。

私がそれを見る方法は私のオプションです:

  1. 入力を前処理し、これらの文字を削除します
  2. これらの文字を無視するようにRedshiftでCOPYコマンドを構成しますが、行はロードします
  3. MAXERRORSを高い値に設定し、別のプロセスを使用してエラーをスイープします。

オプション2が理想的ですが、見つかりません!

私が十分に頑張っていない場合のその他の提案はありますか?

ありがとう

ダンカン

9
Duncan

残念ながら、これを修正する方法はありません。ファイルをAmazon Redshiftにロードする前に、ファイルを前処理する必要があります。

あなたが持っている最も近いオプションはCSV [ QUOTE [AS] 'quote_character' ]は、代替の引用文字でフィールドをラップします。引用文字の前にスラッシュが付いている場合はESCAPEです。悲しいかな、どちらもロードする前にファイルを特定の形式にする必要があります。

見る:

6
John Rotenstein

それは2017年であり、同じ問題に遭遇しました。嬉しいことに、データに奇妙な "があるcsvファイルをロードするためにredshiftを取得する方法があるようになりました。

コツは、ESCAPEキーワードを使用し、CSVキーワードを使用しないことです。理由はわかりませんが、コピーコマンドでCSVキーワードとESCAPEキーワードを一緒に使用すると、「CSVはESCAPEと互換性がありません」というエラーメッセージが表示されて失敗しました。しかし、ロードされたデータに変更を加えることなく、COPYコマンドからCSVキーワードを削除すると、正常にロードできました。

このドキュメントを参考にして参照することもできます。 http://docs.aws.Amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-escape

9
ayeletd