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 文件中嵌入换行符。
我有一个外部 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 文件中嵌入换行符。