Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengemas kini Lajur Jadual Postgres dengan Data daripada Fail CSV Semasa Memelihara Lajur Lain?

Bagaimana untuk Mengemas kini Lajur Jadual Postgres dengan Data daripada Fail CSV Semasa Memelihara Lajur Lain?

Linda Hamilton
Lepaskan: 2025-01-15 10:50:44
asal
646 orang telah melayarinya

How to Update a Postgres Table's Column with Data from a CSV File While Preserving Other Columns?

Mengemas kini Jadual Postgres dengan Data CSV: Pendekatan Terpilih

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

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

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

4. Keluarkan Jadual Sementara:

Akhir sekali, alih keluar jadual sementara untuk mengosongkan sumber:

<code class="language-sql">DROP TABLE tmp_x;</code>
Salin selepas log masuk

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!

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