Athena CTAS保存Json时会转义特殊字符,这可能会影响到原来的Json数据。为了避免这种情况,我们可以使用Athena的“JSONPATH”函数将Json转换为Unescaped字符串。下面是示例代码:
CREATE EXTERNAL TABLE my_table ( event STRING ) PARTITIONED BY (year STRING, month STRING, day STRING) STORED AS PARQUET LOCATION 's3://my-bucket/my_directory/';
CREATE TABLE my_unescaped_table WITH ( format='TEXT', external_location='s3://my-bucket/my_output_directory/', field_delimiter='\t' ) AS SELECT CAST(json_extract(event, '$') AS VARCHAR(MAX)) AS event_unescaped FROM my_table;
在这个示例中,我们首先通过CREATE EXTERNAL TABLE语句创建了一个外部表。接下来,我们使用CAST函数和JSONPATH表达式将Json数据转换为Unescaped字符串,并将结果插入到另一个表中。
通过这种方法,我们可以避免Athena CTAS在保存Json字符串时转义特殊字符的问题。