PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana saya bisa mengimpor file JSON ke PostgreSQL?

Anda dapat memasukkan JSON ke dalam pernyataan SQL yang mengekstrak informasi dan memasukkannya ke dalam tabel. Jika atribut JSON memiliki nama persis seperti kolom tabel, Anda dapat melakukan sesuatu seperti ini:

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;

Pelanggan baru akan dimasukkan, yang sudah ada akan diperbarui. Bagian "ajaib" adalah json_populate_recordset(null::customer, doc) yang menghasilkan representasi relasional dari objek JSON.

Di atas mengasumsikan definisi tabel seperti ini:

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

Jika data disediakan sebagai file, Anda harus terlebih dahulu memasukkan file itu ke dalam beberapa tabel di database. Sesuatu seperti ini:

create unlogged table customer_import (doc json);

Kemudian unggah file ke dalam satu baris tabel itu, mis. menggunakan \copy perintah di psql (atau apa pun yang ditawarkan klien SQL Anda):

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

Kemudian Anda dapat menggunakan pernyataan di atas, cukup hapus CTE dan gunakan tabel staging:

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. Bagaimana cara menangani membuka/menutup koneksi Db di aplikasi Go?

  2. Oracle ke PostgreSQL — Kursor dan Ekspresi Tabel Umum

  3. Bagaimana cara mengabaikan kesalahan dengan psql \copy meta-command

  4. Bagaimana cara mengatur ulang urutan kunci utama postgres ketika tidak sinkron?

  5. Pivot pada Beberapa Kolom menggunakan Tablefunc