PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как мога да импортирам JSON файл в PostgreSQL?

Можете да подадете JSON в SQL израз, който извлича информацията и я вмъква в таблицата. Ако JSON атрибутите имат точно името на колоните на таблицата, можете да направите нещо подобно:

with customer_json (doc) as (
   values 
    ('[
      {
        "id": 23635,
        "name": "Jerry Green",
        "comment": "Imported from facebook."
      },
      {
        "id": 23636,
        "name": "John Wayne",
        "comment": "Imported from facebook."
      }
    ]'::json)
)
insert into customer (id, name, comment)
select p.*
from customer_json l
  cross join lateral json_populate_recordset(null::customer, doc) as p
on conflict (id) do update 
  set name = excluded.name, 
      comment = excluded.comment;

Ще бъдат въведени нови клиенти, а съществуващите ще бъдат актуализирани. „Вълшебната“ част е json_populate_recordset(null::customer, doc) който генерира релационно представяне на JSON обектите.

Горното предполага дефиниция на таблица като тази:

create table customer 
(
  id        integer primary key,
  name      text not null,
  comment   text
);

Ако данните са предоставени като файл, първо трябва да поставите този файл в някаква таблица в базата данни. Нещо като това:

create unlogged table customer_import (doc json);

След това качете файла в един ред от тази таблица, напр. като използвате \copy команда в psql (или каквото предлага вашият SQL клиент):

\copy customer_import from 'customers.json' ....

След това можете да използвате горното изявление, просто премахнете CTE и използвайте таблицата за етапи:

insert into customer (id, name, comment)
select p.*
from customer_import l
  cross join lateral json_populate_recordset(null::customer, doc) as p
on conflict (id) do update 
  set name = excluded.name, 
      comment = excluded.comment;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PG::DuplicateTable:ГРЕШКА:публикациите за връзка вече съществуват

  2. Pandas актуализира sql

  3. Как да изчислим процентил в PostgreSQL

  4. PostgreSQL последователности без празнини

  5. Съхраняване на обща заявка като колона?