??在日常開發(fā)中存在使用半結(jié)構(gòu)化數(shù)據(jù)的場景,當前梧桐數(shù)據(jù)庫支持對該類數(shù)據(jù)處理的功能谅年,下面結(jié)合具體案例介紹半結(jié)構(gòu)化json數(shù)據(jù)的處理谈秫。
一、創(chuàng)建數(shù)據(jù)表
drop table if exists public.tmp_alldata_json_test_202408 ;
create table public.tmp_alldata_json_test_202408
(
id varchar,
alldata json
)with (orientation = orc) distributed by (id);
注:json類型無法作為分布鍵瞧甩,同步創(chuàng)建id主鍵字段作為分布鍵。
二弥鹦、將json數(shù)據(jù)導(dǎo)入數(shù)據(jù)表json字段
通過PSQL連接數(shù)據(jù)庫:
psql -h DataName -U $UserName
Json文件數(shù)據(jù)copy入庫:
\COPY DataColumn ) FROM '/FileName'
三肚逸、查詢確認入數(shù)表數(shù)據(jù)內(nèi)容:
select alldata from public.tmp_alldata_json_test_202408 limit 5;
{"PhoneNum":"12345678910","CustgLabel":["1234567","78901289"],"Province":"551"}
四、使用SQL取數(shù)json字段數(shù)據(jù)中鍵字符串以及對應(yīng)數(shù)據(jù)值
select
alldata-> 'PhoneNum' as PhoneNum ,
alldata-> 'CustgLabel' as CustgLabel ,
alldata-> 'Province' as Province
from public.tmp_alldata_json_test_202408
limit 50;
通過以上方式可以將json結(jié)構(gòu)的數(shù)據(jù)轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù)彬坏,如有需要創(chuàng)建相對應(yīng)的結(jié)構(gòu)化數(shù)據(jù)表將解析后的數(shù)據(jù)插入其中朦促,完成半結(jié)構(gòu)化數(shù)據(jù)到結(jié)構(gòu)化數(shù)據(jù)的轉(zhuǎn)換。
五栓始、總結(jié)
??以上是將json結(jié)構(gòu)的數(shù)據(jù)轉(zhuǎn)化成結(jié)構(gòu)化數(shù)據(jù)的入庫操作方法务冕,首先通過psql COPY的方式將json數(shù)據(jù)入庫,通過語法將半結(jié)構(gòu)化的數(shù)據(jù)解析為結(jié)構(gòu)化數(shù)據(jù)混滔,完成數(shù)據(jù)的入庫及解析洒疚。