Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengemas Kini Baris dengan Cekap dalam Jadual Postgres daripada Fail CSV?

Bagaimanakah Saya Boleh Mengemas Kini Baris dengan Cekap dalam Jadual Postgres daripada Fail CSV?

Susan Sarandon
Lepaskan: 2025-01-15 08:29:45
asal
286 orang telah melayarinya

How Can I Efficiently Update Rows in a Postgres Table from a CSV File?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan