2017-11-15 13 views
0

私はPostgreSQL 9.6を実行しています。多くのカラムからなるテーブルがあります。 私は次の形式を含むCSVファイルを持っている:部分的にcsvからPostgreSQLにインポートします。部分的にJSON

id, insert_time, JSON-object 

JSONオブジェクトは、次の形式ました:

{ column_nameY: valueX, column_nameY: valueY, ... } 

JSONオブジェクト内のCOLUMN_NAMESが私のPostgreSQLの列に一致します-表。

このようなファイルをインポートする動的な方法はありますか?id,insert_time、残りの列の値はJSONオブジェクトから取得しますか?

JSONオブジェクトの列の順序が、PostgreSQLの表の列の順序と一致しないことがあります。

答えて

0

私はあなたがそのcsvファイルをpostgresqlにインポートする方法を知っていて、そのjsonオブジェクトフィールド内のフィールドを知っていることを前提としています。

まず、csvファイルの内容を格納するテーブルを作成します。そのJSONフィールドのデータ型がjsonbであることに注目してください。

create table test11 (id int, insert_time timestamp, json_object jsonb) 

csvファイルをインポートすることがわかります。説明のために、この表にサンプルデータを挿入します。

insert into test11 (id, insert_time, json_object) values (1, '2017-11-14'::timestamp, '{ "column_nameX": "3", "column_nameY": "4" }'::jsonb); 
insert into test11 (id, insert_time, json_object) values (1, '2017-11-14'::timestamp, '{ "column_nameX": "13", "column_nameY": "14" }'::jsonb); 

ここでそのテーブルから選択します。あなたの結果は次のようになります

Select id, insert_time, json_object->>'column_nameY' as Column_NameY, json_object->>'column_nameX' as Column_NameX from test11 

...

id |insert_time |column_namey |column_namex 
1 |11/14/2017  |4    |3 
1 |11/14/2017  |14    |13 

-HTH

関連する問題