2017-11-15 4 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

관련 문제