Virgülle ayrılmış sayısal değerler 3 ila 4 sütun içeren bir dosya var. Boş alanlar, satırın sonunda olduklarında istisna olarak tanımlanır:
1,2,3,4,5
1,2,3,,5
1,2,3
MySQL'de aşağıdaki tablo oluşturuldu:
+ ------- + -------- + ------ + ----- + --------- + ------- + | Alan | Türü | Boş | Anahtar | Varsayılan | Ekstra | + ------- + -------- + ------ + ----- + --------- + ------- + | bir | int (1) | EVET | | NULL | | | iki | int (1) | EVET | | NULL | | | üç | int (1) | EVET | | NULL | | | dört | int (1) | EVET | | NULL | | | beş | int (1) | EVET | | NULL | | + ------- + -------- + ------ + ----- + --------- + ------- +
MySQL LOAD komutunu kullanarak veri yüklemeye çalışıyorum:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
Ortaya çıkan tablo:
+ ------ + ------ + ------- + ------ + ------ + | bir | iki | üç | dört | beş | + ------ + ------ + ------- + ------ + ------ + | 1 | 2 | 3 | 4 | 5 | | 1 | 2 | 3 | 0 | 5 | | 1 | 2 | 3 | NULL | NULL | + ------ + ------ + ------- + ------ + ------ +
Sorun, ham verilerde bir alan boş olduğunda ve tanımlanmadığında, MySQL'in bir nedenden ötürü varsayılan sütun değerlerini (NULL) kullanmaması ve sıfır kullanmasıdır. Alan tamamen eksik olduğunda NULL doğru kullanılır.
Ne yazık ki, bu aşamada NULL ve 0'ı ayırt edebilmeliyim, böylece herhangi bir yardım takdir edilecektir.
Teşekkürler S.
Düzenle
SHOW UYARILARI çıkışı:
+ --------- + ------ + -------------------------------- ------------------------ + | Seviye | Kodu | Mesaj | + --------- + ------ + -------------------------------- ------------------------ + | Uyarı | 1366 | Yanlış tamsayı değeri: '' satır 2'deki 'dört' sütunu için | | Uyarı | 1261 | Satır 3 tüm sütunlar için veri içermiyor | | Uyarı | 1261 | Satır 3 tüm sütunlar için veri içermiyor | + --------- + ------ + -------------------------------- ------------------------ +
LOAD DATA
. Veri şeması değişiklikleriyle ilgili d6tstack SQL örnekleri bölümüne bakın .