Panduan ini menunjukkan cara mengemas kini lajur jadual Postgres secara terpilih menggunakan data daripada fail CSV, meninggalkan lajur lain tidak disentuh. Katakan kita perlu mengemas kini lajur "Pisang" dalam jadual kami sambil mengekalkan nilai sedia ada lajur "Epal".
Penyelesaian:
Kaedah ini menggunakan jadual sementara untuk manipulasi data yang cekap dan selamat.
1. Buat Jadual Sementara:
Mula-mula, buat jadual sementara (tmp_x
) yang mencerminkan struktur jadual sasaran anda, termasuk kunci utama ("ID"):
<code class="language-sql">CREATE TEMP TABLE tmp_x (id int, apple text, banana text);</code>
2. Import Data CSV:
Seterusnya, import data CSV anda ke dalam jadual sementara menggunakan perintah COPY
. Ingat untuk menggantikan /absolute/path/to/file
dengan laluan sebenar ke fail CSV anda:
<code class="language-sql">COPY tmp_x FROM '/absolute/path/to/file' (FORMAT csv);</code>
3. Kemas kini Jadual Sasaran:
Sekarang, kemas kini lajur "Pisang" dalam jadual utama anda (tbl
) menggunakan data daripada jadual sementara, memadankan baris berdasarkan lajur "ID":
<code class="language-sql">UPDATE tbl SET banana = tmp_x.banana FROM tmp_x WHERE tbl.id = tmp_x.id;</code>
4. Keluarkan Jadual Sementara:
Akhir sekali, alih keluar jadual sementara untuk mengosongkan sumber:
<code class="language-sql">DROP TABLE tmp_x;</code>
Pertimbangan Penting:
Keistimewaan: Sebelum Postgres 11, arahan COPY
biasanya memerlukan keistimewaan superuser. Dari Postgres 11 dan seterusnya, peranan seperti pg_read_server_files
atau pg_write_server_files
boleh digunakan. Sebagai alternatif, copy
arahan meta dalam psql
mengelakkan keperluan pengguna super.
Prestasi: Untuk fail CSV yang besar, tingkatkan prestasi dengan melaraskan temp_buffers
dan mencipta indeks pada lajur "ID" jadual sementara. Analisis manual jadual sementara (ANALYZE tmp_x;
) disyorkan kerana ia tidak dianalisis secara automatik.
Pendekatan ini memastikan proses kemas kini yang bersih dan cekap, meminimumkan risiko pengubahsuaian data yang tidak diingini. Ingat untuk sentiasa menyandarkan data anda sebelum melakukan sebarang kemas kini pangkalan data yang penting.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Lajur Jadual Postgres dengan Data daripada Fail CSV Semasa Memelihara Lajur Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!