amazons3select问题:不支持字段内部发生换行

axr492tv  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(307)

我正在尝试使用amazons3select从csv文件中读取记录,如果该字段包含换行符(\n),则不会将该记录解析为单个记录。此外,根据标准csv格式,字段内的换行符已被双引号正确转义。
例如,下面的csv文件

Id,Name,Age,FamilyName,Place

p1,Albert Einstein,25,"Einstein

Cambridge",Cambridge

p2,Thomas Edison,30,"Edison

Cardiff",Cardiff

正在解析为
第1行:身份证、姓名、年龄、家庭名称、地点
第二行:p1,阿尔伯特·爱因斯坦,25岁,“爱因斯坦
3号线:剑桥
第4行:p2,托马斯·爱迪生,30岁,“爱迪生
第5行:加的夫
理想情况下,应按以下所示对其进行分析:
第1行:
身份证、姓名、年龄、家庭名称、地点
第2行:
p1,阿尔伯特·爱因斯坦,25岁,“爱因斯坦
“剑桥”,剑桥
第3行:
p2,托马斯·爱迪生,30岁,“爱迪生
卡迪夫“,卡迪夫
我在selectobjectcontentrequest中将allowquotedrecorddelimiter设置为true,如文档中所示。还是不行。
有人知道amazons3select是否支持上述情况中描述的字段内部换行吗?或者任何其他我需要改变或设置的参数?

lawou6xi

lawou6xi1#

正在正确分析/打印。混淆之处在于输出中正在打印文字换行符。如果在给定的csv上运行以下表达式,则可以对此进行测试:

SELECT COUNT(*) from s3Object s

输出: 2 请注意,如果仅指定第三列,则只能获得正确的值: SELECT s._3 frin s3Object s 您只得到包含所述字段的每行的部分:

"Einstein
Cambridge"
"Edison
Cardiff"

实际上,字段中的字符与默认的csvoutput.recorddelimiter值相同( \n )导致了冲突。如果要以不同的方式分隔每个字段,可以将以下内容添加到outputserialization的csvoutput部分:

"RecordDelimiter": "\r\n"

或者使用其他类型的1-2长度字符序列来代替 \r\n

相关问题