2017-04-25 246 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并通过罚款。谢谢! –