/ /部分的にcsvからPostgreSQLへのインポート、一部はJSON - json、postgresql、csv

部分的にcsvからPostgreSQLへのインポート、一部はJSON - json、postgresql、csv

私は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