Redshift External Table 不处理字段内的换行符

Redshift External Table not handling Linefeed character within a field

我有一个外部 table 使用 Glue 目录并读取 CSV 文件。如果字段有逗号或 LF(换行),则用双引号括起来。如果该字段中有分隔符,但其中包含 LineFeed 的字段正在拆分,并且之后的其余列显示为 NULL,我能够将该字段作为单个值正确读取。

已使用 serde 行格式指定引号字符。并使用普通行格式定界符,行也由 Line Feed ascii 定界。但截至目前,none 似乎有效。

CREATE EXTERNAL TABLE schema.ext_table
(
id varchar (18),
name varchar (80)
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ( 'separatorChar' = ',', 'quoteChar' = '"', 'escapeChar' = '\' )
STORED AS textfile
LOCATION 's3://path/'
TABLE PROPERTIES ('skip.header.line.count'='1')
;

对于这样的文件:

id,name,addCRLF
1,abc,defCRLF
2,"a,b",mnoCRLF
3,"aLF
b",xyzCRLF

请注意,上面文件中的CRLF和LF可以用notepad++之类的工具查看。

我希望输出如下:

1   abc  def
2   a,b  mno
3   a    xyz
    b-------this b need to be in the same cell as that of the a above

但输出结果如下:

1    abc  def
2    a,b  mno
3    a    null
null null null

得到AWS Support的官方回复。 Redshift Spectrum 不支持在 csv 文件中嵌入换行符。