redshiftテーブルにロードする前にspark-csvを使用してデータフレームをCSVに変換しています。 spark-csvは二重引用符をエスケープするためにバックスラッシュを追加します。これは私が期待するものです。しかし、redshiftにロードしようとするときにcopyコマンドを実行すると、バックスプラッシュがバックスプラッシュに追加されます。どうすればそれを防ぐことができますか?ここでredshiftはエスケープ文字を追加します
はサンプルコードです:
df= sqlContext.createDataFrame([("1A", 123456, "first example"), ("1B", 123457, "It's a \"problem\"")], ['id', 'time', 'xstr'])
+---+------+----------------+
| id| time| xstr|
+---+------+----------------+
| 1A|123456| first example|
| 1B|123457|It's a "problem"|
+---+------+----------------+
df.coalesce(1).write.format("com.databricks.spark.csv").option("header", "false")\
.option("quoteMode", "NON_NUMERIC")\
.save(fname)
RSコマンドをコピーします:YYYY区切りFROM COPY xxxxは '' FORMAT CSV
このエラーアウトとSTL_LOAD_ERRORSテーブルはこれを含んでいます
1B,123457,"It's a \\"problem\\""
エスケープ文字がエスケープされないようにするにはどうすればよいですか?
ところで、おそらく、あなたのテキスト文字列から外側の引用符を取り除くために 'REMOVEQUOTES'を使いたいと思うかもしれません。 –
良いキャッチ。ありがとうございました。 –