Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengemas Kini Baris dengan Cekap dalam Jadual Postgres daripada Fail CSV?
Mengoptimumkan Kemas Kini Postgres dengan Data CSV
Mengemas kini jadual Postgres dengan data daripada fail CSV dengan cekap adalah penting untuk pengurusan data. Katakan anda mempunyai jadual (id, pisang, epal) dan fail CSV dengan nilai banana
yang dikemas kini. Cabarannya ialah untuk mengemas kini hanya lajur banana
tanpa mengubah suai lajur apple
.
Memanfaatkan COPY
dan UPDATE
untuk Kemas Kini Yang Cekap
Pendekatan optimum melibatkan penggunaan COPY
untuk mengimport CSV ke dalam jadual sementara, kemudian melaksanakan UPDATE
berdasarkan lajur id
. Inilah prosesnya:
<code class="language-sql">CREATE TEMP TABLE tmp_x (id int, apple text, banana text); -- Or see alternative below COPY tmp_x FROM '/absolute/path/to/file' (FORMAT csv); UPDATE tbl SET banana = tmp_x.banana FROM tmp_x WHERE tbl.id = tmp_x.id; DROP TABLE tmp_x; -- Alternatively, it's automatically dropped at the end of the session</code>
Untuk pendekatan yang lebih diperkemas apabila struktur jadual sementara mencerminkan jadual sasaran:
<code class="language-sql">CREATE TEMP TABLE tmp_x AS SELECT * FROM tbl LIMIT 0;</code>
Ini mencipta jadual sementara kosong dengan skema yang sama seperti tbl
, meninggalkan kekangan.
Pertimbangan Keselamatan dan Prestasi
Sebelum Postgres 11, COPY
memerlukan keistimewaan superuser. Walau bagaimanapun, versi Postgres 11 dan yang lebih baru menawarkan peranan yang dipratentukan (seperti pg_read_server_files
dan pg_write_server_files
) untuk keselamatan yang dipertingkatkan.
Arahan meta psql
copy
menawarkan penyelesaian lain, melaksanakan perintah COPY
secara setempat, sekali gus memintas keperluan keistimewaan pengguna super.
Untuk fail CSV yang besar, pengoptimuman prestasi adalah penting. Pertimbangkan untuk meningkatkan parameter temp_buffers
buat sementara waktu. Mencipta indeks pada lajur id
jadual sementara dan menjalankan ANALYZE
boleh meningkatkan lagi kelajuan pertanyaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas Kini Baris dengan Cekap dalam Jadual Postgres daripada Fail CSV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!