Fer*_*Byn 4 json hive amazon-s3 presto amazon-athena
我在雅典娜有一张这种结构的桌子
CREATE EXTERNAL TABLE `json_test`(
`col0` string ,
`col1` string ,
`col2` string ,
`col3` string ,
`col4` string ,
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'quoteChar'='\"',
'separatorChar'='\;')
Run Code Online (Sandbox Code Playgroud)
像这样的 Json 字符串存储在“col4”中:
{'email': 'test_email@test_email.com', 'name': 'Andrew', 'surname': 'Test Test'}
Run Code Online (Sandbox Code Playgroud)
我正在尝试进行 json_extract 查询:
SELECT json_extract(col4 , '$.email') as email FROM "default"."json_test"
Run Code Online (Sandbox Code Playgroud)
但查询返回空值。
任何帮助,将不胜感激。
JSON 需要使用双引号 ( ") 来封闭值。
相比:
presto> SELECT json_extract('{"email": "test_email@test_email.com", "name": "Andrew"}' , '$.email');
_col0
-----------------------------
"test_email@test_email.com"
Run Code Online (Sandbox Code Playgroud)
和
presto> SELECT json_extract('{''email'': ''test_email@test_email.com'', ''name'': ''Andrew''}', '$.email');
_col0
-------
NULL
Run Code Online (Sandbox Code Playgroud)
(注意:''在 SQL 内部 varchar 文字表示'构造值中的单个,因此这里的文字与问题中的格式相同。)
如果您的字符串值是“带单引号的 JSON”,您可以尝试修复它 replace(string, search, replace) ? varchar
| 归档时间: |
|
| 查看次数: |
9753 次 |
| 最近记录: |