Amazon web services 无法使AWS Athena escapeChar工作
我正试着拿AWS雅典娜做一个旋转,我遇到了一个csv文件的问题,我正试图测试它 使用以下方法,escapeChar似乎不起作用。 我尝试过使用爬虫并在UI中指定escapeChar,有双引号和没有双引号,但仍然没有成功。当一行在字符串中包含分隔符时,即使已转义,也会将其作为字段分隔符读取 DDLAmazon web services 无法使AWS Athena escapeChar工作,amazon-web-services,csv,hive-serde,Amazon Web Services,Csv,Hive Serde,我正试着拿AWS雅典娜做一个旋转,我遇到了一个csv文件的问题,我正试图测试它 使用以下方法,escapeChar似乎不起作用。 我尝试过使用爬虫并在UI中指定escapeChar,有双引号和没有双引号,但仍然没有成功。当一行在字符串中包含分隔符时,即使已转义,也会将其作为字段分隔符读取 DDL CREATE EXTERNAL TABLE mytestcsvtable ( col_id string, col_description string, co
CREATE EXTERNAL TABLE mytestcsvtable (
col_id string,
col_description string,
col_text string,
col_decimal string,
col_float string,
col_date string,
col_time string,
col_timestamp string
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'separatorChar' = '|',
'escapeChar' = '\\'
)
STORED AS TEXTFILE
LOCATION 's3://mystaging2/tmp/';
数据
401|SingleBackslash|Goblin \\Gobby Gruesome|.00|0E0|2020-03-02|21.21.43|2020-03-02 12.35.52.145894
402|EvenNumberOfSingleBackslash|Goblin \\Gobby\\ Gruesome|.00|0E0|2020-03-02|22.22.44|2020-03-02 12.35.52.156563
403|SingleSingleBackslash|Goblin \\\\Gobby\\\\ Gruesome|.00|0E0|2020-03-02|23.23.45|2020-03-02 12.35.52.158011
404|OddNumberOfSingleBackslash1|Goblin \\Gruesome\\ \\Gruesome|.00|0E0|2020-03-02|00.24.46|2020-03-02 12.35.52.159835
405|OddNumberOfSingleBackslash2|Goblin \\\\Gobby\\ Gruesome|.00|0E0|2020-03-02|01.25.47|2020-03-02 12.35.52.162538
406|OddNumberOfSingleSingleBackslash1|Goblin \\\\Gruesome\\\\ \\\\Gruesome|.00|0E0|2020-03-02|02.26.48|2020-03-02 12.35.52.163510
407|OddNumberOfSingleSingleBackslash2|Goblin \\\\Gobby\\\\\\ \\\\Gruesome|.00|0E0|2020-03-02|03.27.49|2020-03-02 12.35.53.167322
408|SingleSingleSingleBackslash1|Goblin \\\\\\Gobby|.00|0E0|2020-03-02|04.28.50|2020-03-02 12.35.53.179868
501|SinglePipe|Goblin \|Gobby Gruesome|.00|0E0|2020-03-02|05.29.51|2020-03-02 12.35.53.180025
502|EvenNumberOfSinglePipe|Goblin \|Gobby\| Gruesome|.00|0E0|2020-03-02|06.30.52|2020-03-02 12.35.53.184042
503|SingleSinglePipe|Goblin \|\|Gobby\|\| Gruesome|.00|0E0|2020-03-02|07.31.53|2020-03-02 12.35.53.189979
504|OddNumberOfSinglePipe1|Goblin \|Gruesome\| \|Gruesome|.00|0E0|2020-03-02|08.32.54|2020-03-02 12.35.53.194734
505|OddNumberOfSinglePipe2|Goblin \|\|Gobby\| Gruesome|.00|0E0|2020-03-02|09.33.55|2020-03-02 12.35.53.196996
506|OddNumberOfSingleSinglePipe1|Goblin \|\|Gruesome\|\| \|\|Gruesome|.00|0E0|2020-03-02|10.34.56|2020-03-02 12.35.53.203568
507|OddNumberOfSingleSinglePipe2|Goblin \|\|Gobby\|\|\| \|\|Gruesome|.00|0E0|2020-03-02|11.35.57|2020-03-02 12.35.53.203999
508|SingleSingleSinglePipe1|Goblin \|\|\|Gobby|.00|0E0|2020-03-02|12.36.58|2020-03-02 12.35.54.208965
感谢您抽出时间阅读我的帖子 在csv中,
escapeChar
用于转义引号字段内可能的quoteChar
,而不是转义分隔符
要“转义”字段内的分隔符,必须引用该字段-例如:
501|SinglePipe|Goblin \|Gobby Gruesome|.00|0E0|2020-03-02
变成:
501|SinglePipe|"Goblin \|Gobby Gruesome"|.00|0E0|2020-03-02
or
501|SinglePipe|"Goblin |Gobby Gruesome"|.00|0E0|2020-03-02
如果字段内有引号,则必须转义:
501|SinglePipe|"Goblin|24\" monitor|Gobby Gruesome"|.00|0E0|2020-03-02
如果不是默认值,请确保告诉解析器使用
quoteChar
。在csv中,escapeChar
用于转义引号字段内可能的quoteChar
,而不是转义定界符
要“转义”字段内的分隔符,必须引用该字段-例如:
501|SinglePipe|Goblin \|Gobby Gruesome|.00|0E0|2020-03-02
变成:
501|SinglePipe|"Goblin \|Gobby Gruesome"|.00|0E0|2020-03-02
or
501|SinglePipe|"Goblin |Gobby Gruesome"|.00|0E0|2020-03-02
如果字段内有引号,则必须转义:
501|SinglePipe|"Goblin|24\" monitor|Gobby Gruesome"|.00|0E0|2020-03-02
如果这不是默认值,请确保告诉解析器使用
quoteChar
。感谢这一点,如果字段包含“或\或”,则用引号将字段括起来,并使用quoteChar+escapeChar,否则不要用quoteShanks括起来,如果字段包含”或\或|然后用引号括起字段,并使用引号+转义符,否则不要用引号括起字段