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

Di PostgreSQL, bagaimana cara memasukkan data dengan perintah COPY?

COPY tbl FROM STDIN;

tidak didukung oleh pgAdmin.
Anda mendapatkan kesalahan sintaks biasa karena Postgres mendapatkan data sebagai kode SQL.

Empat solusi yang mungkin:

1. Gunakan multi-baris INSERT sebagai gantinya:

INSERT INTO beer(name, tags, alcohol, brewery, id, brewery_id, image)
VALUES 
  ('Bons Voeux', 'blonde', 9.5, 'Brasserie Dupont', 250, 130, 'generic.png')
, ('Boerke Blond', 'blonde', 6.8, 'Brouwerij Angerik', 233, 287 'generic.png')
;

Perhatikan sintaks (SQL) yang berbeda untuk nilai sebagai string atau literal numerik.

Anda dapat menghasilkan data dengan pg_dump menggunakan --inserts . Terkait:

  • Ekspor baris tertentu dari tabel PostgreSQL sebagai skrip INSERT SQL

2. Atau panggil skrip Anda di baris perintah menggunakan psql . Sebagai pengguna sistem postgres :

psql -f beer.sql -U my_login_role -d db_name 

Basis data (-d ) dan peran login (-U untuk "Pengguna") dapat dihilangkan jika defaultnya ok. Contoh sintaks:

  • Buat database Postgres menggunakan file batch dengan [template],[encoding],[owner] dan file .sql

Pastikan ada penanda akhir data (\. ) untuk text default format. (Anda memilikinya.) Panduan:

Akhir data dapat diwakili oleh satu baris yang berisi justbackslash-period (\. ). Penanda akhir data tidak diperlukan saat membaca dari file, karena akhir file berfungsi dengan baik; ini hanya diperlukan saat menyalin data ke atau dari aplikasi klien menggunakan protokol klien pra-3.0.

3. Atau pindahkan data Anda ke file terpisah di server , ucapkan 'beer_data.csv' dan gunakan COPY .. FROM 'filename' dalam skrip Anda:

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';

Yang bekerja dengan cara apa pun. Anda membutuhkan hak pengguna super, meskipun. Panduan:

[...] COPY penamaan file atau perintah hanya diperbolehkan untuk superusers atau pengguna database yang diberikan salah satu peran defaultpg_read_server_files , pg_write_server_files , ataupg_execute_server_program , karena memungkinkan membaca atau menulis file apa pun atau menjalankan program yang memiliki hak istimewa untuk diakses oleh server.

(pg_read_server_files , pg_write_server_files dan pg_execute_server_program baru di Postgres 11.)

4. Atau baca file lokal ke klien dengan perintah meta psql \copy . Lihat:

  • Bagaimana cara memperbarui baris yang dipilih dengan nilai dari file CSV di Postgres?
  • Cara menggunakan \copy di postgresql dengan pgadmin4


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cara Menampilkan Semua Database di PostgreSQL (psql)

  2. Hibernasi Lambat untuk Memperoleh Koneksi Postgres

  3. Postgres homebrew rusak

  4. Bidang gabungan CTE rekursif dengan orang tua dari titik sewenang-wenang

  5. Performa TPC-H sejak PostgreSQL 8.3