简体   繁体   English

如何将Json数据导入Postgres表

[英]How to import Json data into Postgres table

I have an API that gives json data text file called corporateHoliday.txt . 我有一个API,可提供名为CorporateHoliday.txt的 json数据文本文件。

The data look like this: 数据如下所示:

{
    "holiday_id":"1712010100000104",
    "holiday_date":"2018-12-30 00:00:00.0",
    "holiday_description":"SUNDAY",
    "holiday_status":"A"
},
{
    "holiday_id":"1712010100000103",
    "holiday_date":"2018-12-29 00:00:00.0",
    "holiday_description":"SATURDAY",
    "holiday_status":"A"
}

My postgres table attributes look like this t_leave_holida(objectid, holiday_date,description,recstatus) 我的postgres表属性看起来像这样t_leave_holida(objectid,holiday_date,description,recstatus)

I want to import these json data from txt file into the postgres database table? 我想将这些json数据从txt文件导入到postgres数据库表中?

you can use jsonb type and just select data from json, like here: 您可以使用jsonb类型,而只需从json中选择数据,例如:

db=# create table t_leave_holida(objectid bigint, holiday_date timestamp(1), description text,recstatus text);
db=# insert into t_leave_holida select (d->>'holiday_id')::bigint, (d->>'holiday_date')::timestamp, d->>'holiday_description', d->>'holiday_status' from (select '{
    "holiday_id":"1712010100000104",
    "holiday_date":"2018-12-30 00:00:00.0",
    "holiday_description":"SUNDAY",
    "holiday_status":"A"
}'::jsonb d) ali;
INSERT 0 1
db=# select * from t_leave_holida;
     objectid     |    holiday_date     | description | recstatus
------------------+---------------------+-------------+-----------
 1712010100000104 | 2018-12-30 00:00:00 | SUNDAY      | A
(1 row)

Construct a json array we can insert all records in t_leave_holida 构造一个json数组,我们可以将所有记录插入t_leave_holida

insert into t_leave_holida(objectid, holiday_date,description,recstatus)
  select holiday_id,holiday_date,holiday_description,holiday_status from
  json_to_recordset(
   '[
      {
        "holiday_id":"1712010100000104",
        "holiday_date":"2018-12-30 00:00:00.0",
        "holiday_description":"SUNDAY",
        "holiday_status":"A"
      },
      {
        "holiday_id":"1712010100000103",
        "holiday_date":"2018-12-29 00:00:00.0",
        "holiday_description":"SATURDAY",
        "holiday_status":"A"
      }
    ]'
  ) as x(holiday_id bigint, holiday_date date, holiday_description text,holiday_status text);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM