Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengendalikan Nilai NULL Daripada Sifar Apabila Mengimport Data CSV dengan Medan Kosong ke dalam MySQL Menggunakan LOAD DATA INFILE?

Bagaimanakah Saya Boleh Mengendalikan Nilai NULL Daripada Sifar Apabila Mengimport Data CSV dengan Medan Kosong ke dalam MySQL Menggunakan LOAD DATA INFILE?

Susan Sarandon
Lepaskan: 2025-01-04 14:02:39
asal
144 orang telah melayarinya

How Can I Handle NULL Values Instead of Zeros When Importing CSV Data with Empty Fields into MySQL Using LOAD DATA INFILE?

Mengendalikan Nilai NULL dalam MySQL LOAD daripada CSV dengan Medan Kosong

Arahan LOAD MySQL menawarkan kaedah mudah untuk mengimport data daripada fail CSV ke dalam jadual. Walau bagaimanapun, apabila memuatkan data berangka daripada fail CSV yang mengandungi medan kosong, MySQL cenderung untuk memasukkan sifar dan bukannya NULL, walaupun apabila lajur ditakrifkan sebagai boleh dibatalkan.

Pertimbangkan fail CSV berikut (testdata.txt):

1,2,3,4,5
1,2,3,,5
1,2,3
Salin selepas log masuk

Dan jadual MySQL berikut (moo):

CREATE TABLE moo (
  one INT(1) NULL,
  two INT(1) NULL,
  three INT(1) NULL,
  four INT(1) NULL,
  five INT(1) NULL
);
Salin selepas log masuk

Apabila memuatkan CSV data ke dalam jadual moo menggunakan arahan LOAD:

LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS TERMINATED BY "," LINES TERMINATED BY "\n";
Salin selepas log masuk

Jadual yang terhasil akan mengandungi:

+------+------+-------+------+------+
| one  | two  | three | four | five |
+------+------+-------+------+------+
| 1    | 2    | 3     | 4    | 5    |
| 1    | 2    | 3     | 0    | 5    |
| 1    | 2    | 3     | NULL | NULL |
+------+------+-------+------+------+
Salin selepas log masuk

Seperti yang anda boleh perhatikan, MySQL memberikan sifar kepada medan kosong, yang tidak betul apabila lajur membenarkan nilai NULL.

Untuk menangani isu ini dan memastikan medan kosong dikendalikan dengan betul sebagai NULL, gunakan Fungsi NULLIF(). NULLIF() mengambil dua argumen: medan yang akan diperiksa dan nilai untuk dikembalikan jika medan itu kosong. Begini cara menggunakannya:

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,'')
;
Salin selepas log masuk

Dalam contoh ini, medan keempat dibaca ke dalam pembolehubah setempat @vfour. Pernyataan SET kemudiannya menetapkan empat kepada NULL jika @vfour ialah rentetan kosong.

Jika berbilang medan boleh kosong, baca semuanya ke dalam pembolehubah setempat dan gunakan berbilang pernyataan SET:

LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(@vone, @vtwo, @vthree, @vfour, @vfive)
SET
one = NULLIF(@vone,''),
two = NULLIF(@vtwo,''),
three = NULLIF(@vthree,''),
four = NULLIF(@vfour,'')
;
Salin selepas log masuk

Dengan memanfaatkan NULLIF(), MySQL LOAD kini boleh mengendalikan medan kosong dengan betul dan memberikan nilai NULL, membolehkan anda bekerja dengan tepat dengan data dalam anda Jadual MySQL.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Nilai NULL Daripada Sifar Apabila Mengimport Data CSV dengan Medan Kosong ke dalam MySQL Menggunakan LOAD DATA INFILE?. 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