redshift添加转义字符

时间:2017-04-25 21:12:02

标签: csv apache-spark amazon-redshift

我正在使用spark-csv将数据帧转换为CSV,然后才能加载到redshift表中。 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命令:     COPY xxxx FROM YYYY delimiter','FORMAT CSV

它出错并且STL_LOAD_ERRORS表包含:

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

如何防止红移逃脱转义字符?

1 个答案:

答案 0 :(得分:1)

尝试在COPY声明中加入ESCAPE关键字,例如

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