Saya memiliki skema database bernama: nyummy
dan tabel bernama cimory
:
create table nyummy.cimory (
id numeric(10,0) not null,
name character varying(60) not null,
city character varying(50) not null,
CONSTRAINT cimory_pkey PRIMARY KEY (id)
);
Saya ingin mengekspor data cimory
tabel sebagai menyisipkan file skrip SQL. Namun, saya hanya ingin mengekspor catatan / data di mana kota itu sama dengan 'tokyo' (anggap data kota semuanya huruf kecil).
Bagaimana cara melakukannya?
Tidak masalah apakah solusinya ada di alat GUI freeware atau baris perintah (meskipun solusi alat GUI lebih baik). Saya telah mencoba pgAdmin III, tetapi saya tidak dapat menemukan opsi untuk melakukan ini.
Jawaban:
Buat tabel dengan set yang ingin Anda ekspor dan kemudian gunakan utilitas baris perintah pg_dump untuk mengekspor ke file:
--column-inserts
akan membuang sebagai menyisipkan perintah dengan nama kolom.--data-only
jangan buang skema.Seperti yang dikomentari di bawah ini, membuat tampilan bukan tabel akan meniadakan pembuatan tabel setiap kali ekspor baru diperlukan.
sumber
create view export_view...
, karena tampilan akan tetap up-to-date dengan perubahan pada tabel dasar. The docs mengatakan--table=table: Dump only tables (or **views**...
jadi aku punya beberapa harapan ini akan bekerja, tetapi membuang pandangan sedih menghasilkan data tidak. : Ppg_dump --table=my_schema.my_view --data-only --inserts my_db > data.sql
, versi 9.5.3, dancreate
pernyataan saya sama dengan Anda kecualicreate view...
. Yang saya dapatkan di output adalah komentar danSET
pernyataan pg_dump yang biasa . Tidak yakin di mana saya salah.Untuk penggunaan ekspor data saja
COPY
.Anda mendapatkan file dengan satu baris tabel per baris sebagai teks biasa (bukan
INSERT
perintah), lebih kecil dan lebih cepat:Impor yang sama ke tabel lain dari struktur yang sama di mana saja dengan:
COPY
menulis dan membaca file secara lokal ke server , tidak seperti program klien sepertipg_dump
ataupsql
yang membaca dan menulis file secara lokal ke klien . Jika keduanya berjalan pada mesin yang sama, tidak masalah, tetapi itu berlaku untuk koneksi jarak jauh.Ada juga
\copy
perintah psql yang:sumber
insert
perintah, bukan?STDIN
danSTDOUT
dapat digunakan sebagai ganti path file, berguna untuk ekspor data kecil.--column-inserts
bendera, pg_dump menggunakanCOPY
dari STDIN untuk masing-masing tabel dalam kode SQL yang dihasilkannya.Ini adalah cara mudah dan cepat untuk mengekspor tabel ke skrip dengan pgAdmin secara manual tanpa instalasi tambahan :
Metode ini juga bekerja dengan teknik membuat export_table seperti yang ditunjukkan dalam jawaban @Clodoaldo Neto.
sumber
SQL Workbench memiliki fitur seperti itu.
Setelah menjalankan kueri, klik kanan pada hasil kueri dan pilih "Salin Data Sebagai SQL> Sisipan SQL"
sumber
Untuk case-use saya, saya bisa hanya pipa untuk grep.
sumber
Saya mencoba menulis prosedur melakukan itu, berdasarkan pada kode @ PhilHibbs, dengan cara yang berbeda. Silakan lihat dan uji.
Lalu :
diuji pada postgres 9.1 saya, dengan tabel dengan tipe data bidang campuran (teks, dobel, int, cap waktu tanpa zona waktu, dll).
Itu sebabnya CAST dalam jenis TEXT diperlukan. Tes saya berjalan dengan benar selama sekitar 9M baris, sepertinya gagal sebelum 18 menit berjalan.
ps: Saya menemukan padanan untuk mysql di WEB.
sumber
Anda bisa membuat tampilan tabel dengan catatan tertentu dan kemudian membuang file sql
sumber
Saya baru saja mengetuk prosedur cepat untuk melakukan ini. Ini hanya berfungsi untuk satu baris, jadi saya membuat tampilan sementara yang hanya memilih baris yang saya inginkan, dan kemudian mengganti pg_temp.temp_view dengan tabel aktual yang ingin saya masukkan.
Disebut demikian:
Saya belum menguji ini terhadap serangan injeksi, beri tahu saya jika panggilan quote_literal tidak cukup untuk itu.
Juga hanya berfungsi untuk kolom yang dapat dengan mudah dilemparkan ke :: teks dan kembali lagi.
Ini juga untuk Greenplum tapi saya tidak bisa memikirkan alasan mengapa itu tidak bisa digunakan pada Postgres, CMIIW.
sumber
sudahkah kamu mencoba di pgadmin mengeksekusi query dengan
" EXECUTE QUERY WRITE RESULT TO FILE "
opsiitu hanya mengekspor data, coba yang lain suka
Opsi -t digunakan untuk ==> Tabel pencocokan hanya Dump (atau tampilan atau urutan) pencocokan, merujuk
sumber
create view
pernyataan