Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memuatkan Nilai NULL, Bukan Sifar, dari CSV ke MySQL menggunakan LOAD DATA INFILE?

Bagaimana untuk Memuatkan Nilai NULL, Bukan Sifar, dari CSV ke MySQL menggunakan LOAD DATA INFILE?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-22 07:28:09788semak imbas

How to Load NULL Values, Not Zeros, from a CSV into MySQL using LOAD DATA INFILE?

MySQL: Memuatkan Nilai NULL daripada Data CSV

Masalah:

Apabila memuatkan data daripada fail CSV dengan medan kosong ke dalam jadual MySQL menggunakan arahan LOAD DATA INFILE, MySQL memberikan 0 kepada medan kosong dan bukannya NULL, walaupun apabila lajur ditakrifkan dengan nilai lalai NULL.

Penyelesaian:

Untuk memuatkan nilai NULL dengan betul untuk medan kosong, baca medan bermasalah ke dalam setempat pembolehubah dan kemudian secara bersyarat tetapkan nilai medan sebenar kepada NULL jika pembolehubah itu kosong:

LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(one, two, three, @vfour, five)
SET four = NULLIF(@vfour,'')
;

Penjelasan:

  • Penyata LOAD DATA INFILE membaca data daripada fail CSV ke dalam jadual moo.
  • Klausa FIELDS mentakrifkan medan dalam fail CSV dan nama lajur yang sepadan dalam fail CSV jadual.
  • Medan keempat (@vfour) dibaca ke dalam pembolehubah tempatan dan bukannya terus ke dalam empat lajur.
  • Pernyataan SET menyemak sama ada pembolehubah @vfour kosong ('') menggunakan fungsi NULLIF.
  • Jika @vfour kosong, empat lajur ditetapkan kepada NULL; jika tidak, ia mengekalkan nilai asalnya.

Nota Tambahan:

Jika semua medan berpotensi kosong, baca semuanya ke dalam pembolehubah setempat dan gunakan berbilang SET penyataan untuk menetapkan nilai NULL secara bersyarat.

Atas ialah kandungan terperinci Bagaimana untuk Memuatkan Nilai NULL, Bukan Sifar, dari CSV ke MySQL menggunakan LOAD DATA INFILE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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