redshift 添加转义字符

Posted

技术标签:

【中文标题】redshift 添加转义字符【英文标题】:redshift adds escape character 【发布时间】:2017-04-25 21:12:01 【问题描述】:

我正在使用 spark-csv 将数据帧转换为 CSV,然后才能加载到红移表中。 spark-csv 添加了一个反斜杠来转义双引号,这是我所期望的。但是当复制命令尝试加载到redshift时,它会在backsplash中添加一个backsplash。如何预防?

这是一个示例代码:

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\\""    

如何防止 redshift 转义转义字符?

【问题讨论】:

顺便说一句,您可能还想使用REMOVEQUOTES 将文本字符串的外引号去掉。 好收获。谢谢。 【参考方案1】:

尝试在 COPY 语句中包含 ESCAPE 关键字,例如

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

【讨论】:

添加转义会给出错误消息,即 ESCAPE 与 CSV 不兼容。我删除了格式 CSV 并顺利通过。谢谢!

以上是关于redshift 添加转义字符的主要内容,如果未能解决你的问题,请参考以下文章

如何让在Html中特殊字符不被转义

如何防止 wcf 在响应中添加转义字符?

微信中发送的网址出现转义字符,该如何做

Shell脚本之循环语句和转义字符

正则表达式——转义

eclipse 粘贴字符串自动添加转义符