Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在分隔符之前使用转义字符创建Athena表_Amazon Web Services_Etl_Aws Glue_Amazon Athena_Hive Serde - Fatal编程技术网

Amazon web services 在分隔符之前使用转义字符创建Athena表

Amazon web services 在分隔符之前使用转义字符创建Athena表,amazon-web-services,etl,aws-glue,amazon-athena,hive-serde,Amazon Web Services,Etl,Aws Glue,Amazon Athena,Hive Serde,我正在从s3中的数据创建雅典娜表。下面是查询的简短版本 CREATE EXTERNAL TABLE `tablename`( `licensee_pub` string COMMENT 'from deserializer', `admin_number` string COMMENT 'from deserializer', `account_name` string COMMENT 'from deserializer', `ipi_number` string COM

我正在从s3中的数据创建雅典娜表。下面是查询的简短版本

CREATE EXTERNAL TABLE `tablename`(
  `licensee_pub` string COMMENT 'from deserializer', 
  `admin_number` string COMMENT 'from deserializer', 
  `account_name` string COMMENT 'from deserializer', 
  `ipi_number` string COMMENT 'from deserializer', 
  `title` string COMMENT 'from deserializer', 
  `name` string COMMENT 'from deserializer',
  `play_minutes` string COMMENT 'from deserializer', 
  `play_seconds` string COMMENT 'from deserializer')
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ( 
  'escapeChar'='\\', 
  'separatorChar'=',') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'path/to/s3'
TBLPROPERTIES (
  'has_encrypted_data'='false')
S3中的文件是用逗号分隔的,虽然创建的表很好,但文件中很少有行有下面这样的记录行

“a”、“b”、“c”、“d”、“abc///def\\\”、“e”、“21”、“32”

未正确创建“abc///def\\”行的实例,将该行后面的所有数据仅放在一个(标题)字段中,如下所示

abc///def\”,e,21,32

可能是转义,并且未正确识别列


是否有任何方法可以使def\\to not escape之类的文本出现异常,或任何其他解决方法?

DDL中的
escapeChar
属性表示转义字符是单个
\
(需要转义
escapeChar
中的反斜杠,因此两个反斜杠实际上意味着一个)

这意味着当serde遇到
“\\\”
时,它将使用第一个反斜杠作为第二个转义符,第三个反斜杠作为
的转义符。由于结束引号已转义,serde将继续读取,直到下一个(未转义)引号


如果您没有实际的转义引号,您可以将
转义卡尔
更改为其他内容,然后在应用程序中确定
\\\
的含义。

不幸的是,我的字符串中有实际的转义引号。我需要用\转义其他字符,但字符串末尾的那个字符。我认为您无法解决这个问题。
\“
表示转义引号,或者不表示转义引号,您不能表示它仅在某些上下文中表示转义。