从部分csv导入PostgreSQL,部分是JSON

时间:2017-11-15 10:47:32

标签: json postgresql csv

我正在运行PostgreSQL 9.6,并且我有一个包含大量列的表。 我有一个包含以下格式的csv文件:

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

JSON对象具有以下格式:

id

JSON对象中的column_names匹配PostgreSQL表中的列。

是否有动态方式导入此类文件,因此我会从JSON对象中获取insert_timefinal Date todayDate = new Date(); System.out.println(todayDate); System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(todayDate)); System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(todayDate)); System.out.println(todayDate); 和其余列值?

JSON对象中列的顺序可能与PostgreSQL表中列的顺序不匹配。

1 个答案:

答案 0 :(得分: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