私はPostgreSQL 9.6を走らせています。私はたくさんの列からなるテーブルを持っています。 私は次の形式を含むcsvファイルを持っています:
id, insert_time, JSON-object
JSONオブジェクトの形式は次のとおりです。
{ column_nameY: valueX, column_nameY: valueY, ... }
JSONオブジェクトのcolumn_namesは、PostgreSQLのテーブルの列と一致します。
そのようなファイルをインポートする動的な方法はありますか? id
, insert_time
、およびJSONオブジェクトの残りの列の値は?
JSONオブジェクトの列の順序は、PostgreSQLの表の列の順序と一致しない可能性があります。
回答:
回答№1は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