Anda tidak dapat melewati kesalahan tanpa melewatkan seluruh perintah hingga dan termasuk Postgres 14. Saat ini tidak ada penanganan kesalahan yang lebih canggih.
\copy hanyalah pembungkus SQL COPY yang menyalurkan hasil melalui psql. Manual untuk COPY :
COPYmenghentikan operasi pada kesalahan pertama. Ini seharusnya tidak menyebabkan masalah jika terjadiCOPY TO, tetapi tabel target akan sudah menerima baris sebelumnya dalamCOPY FROM. Baris ini tidak akan terlihat atau dapat diakses, tetapi masih menempati ruang disk. Ini mungkin merupakan jumlah yang cukup besar dari ruang disk yang terbuang jika kegagalan terjadi dengan baik pada operasi penyalinan yang besar. Anda mungkin ingin mengaktifkanVACUUMuntuk memulihkan ruang yang terbuang.
Penekanan saya yang berani. Dan:
COPY FROMakan memunculkan kesalahan jika ada baris file input yang berisi kolom lebih banyak atau lebih sedikit dari yang diharapkan.
COPY adalah cara yang sangat cepat untuk mengimpor / mengekspor data. Pemeriksaan yang canggih dan penanganan kesalahan akan memperlambatnya.
Ada upaya untuk menambahkan logging kesalahan ke COPY di Postgres 9.0 tetapi tidak pernah dilakukan.
Solusi
Perbaiki file masukan Anda.
Jika Anda memiliki satu atau lebih kolom tambahan di file masukan dan file sebaliknya konsisten , Anda dapat menambahkan kolom dummy ke tabel Anda isa dan jatuhkan itu setelahnya. Atau (pembersih dengan tabel produksi) impor ke tabel staging sementara dan INSERT kolom (atau ekspresi) yang dipilih ke tabel target Anda isa dari sana.
Jawaban terkait dengan petunjuk terperinci:
- Bagaimana cara memperbarui baris yang dipilih dengan nilai dari file CSV di Postgres?
- Perintah SALIN:salin hanya kolom tertentu dari csv