2017-04-25 34 views
0

我使用spark-csv將數據框轉換爲CSV,然後才能將其加載到紅移表中。 spark-csv添加了一個反斜槓來轉義雙引號,這正是我所期望的。但是,當它嘗試加載到紅移時的複製命令時,它會向後擋板添加後擋板。我怎樣才能防止它?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複製命令: COPY XXXX FROM YYYY定界符 '' FORMAT CSV

它錯誤出和STL_LOAD_ERRORS表包含此:

1B,123457,"It's a \\"problem\\""  

如何防止紅移逃離轉義字符?

+0

順便說一句,您可能還想使用'REMOVEQUOTES'將外部引號從您的文本字符串中刪除。 –

+0

好的。謝謝。 –

回答

1

嘗試在COPY語句中包含ESCAPE關鍵字,例如,

COPY xxxx FROM YYYY 
delimiter ',' 
FORMAT CSV 
ESCAPE 
; 
+2

添加轉義給出了ESCAPE與CSV不兼容的錯誤消息。我刪除格式CSV並通過罰款。謝謝! –