2012-09-07 19 views
7

HeidiSQL ile MySQL veritabanına bir csv dosyası almak istiyorum.HeidiSQL import csv boş alanlar

Ancak bazı alanlarım boş.

HeidiSQL'in bu boş değerlerin NULL değerleri olarak görülmesini bilmesine izin vermek için ne yapabilirim? (Son 2 alanlarına henüz bilinmemektedir) CSV dosyasının

Örnek:

NULL;Students Corner;437452182;; 

oluştur komutları:

Incorrect integer value: '' for column 'company_id' at row 1 */ 
    Incorrect integer value: '' for column 'company_vat' at row 1 */ 
    Incorrect integer value: '' for column 'company_zip' at row 1 */ 
    etc 
+0

Post CSV'YE GÖRE TABLO OLUŞTURMA ve örnek satırları – rkosegi

+1

SET yan tümcesi ile LOAD DATA INFILE komutunu kullanarak yapabilirsiniz - boş dizeleri NULL değerleriyle değiştirin. – Devart

+0

Değiştirin ;; tarafından; NULL; CSV'nizde tekrar deneyin. –

cevap

7

Eğer NULL yazmak yerine her boş alanda \ N yazarak çözdüyseniz!

+1

bu iyi. Kullandığın cevabını kabul etmeyi unutma. Hala "LOAD DATA INFILE" sorgu çözümünün daha iyi olduğunu söyleyebilirim, çünkü bir CSV dosyasını içe aktarmadan önce işleme koyma seçeneğine sahip değildir. Sorguyu yazmak, bu mantığın tümünü tek bir komut dosyasına koymanızı sağlar; bu, bir dahaki sefere tek bir komut olarak çalıştırabileceğiniz ve dosyanın içeriğini kontrol etme konusunda endişelenmeyeceğiniz anlamına gelir. – SDC

+0

Evet, kesinlikle haklısınız! Yardım için teşekkürler! – francisMi

+1

Vay, bu cevap toplam cankurtaran! Büyük bir CSV dosyasını (200k satır ve 34 sütun) içe aktarmaya çalışıyorum ve bana NULL değerleri hakkında hataları ve uyarıları attığım için beni deli ediyor. Görünüşe göre \ N \ 'NULL' yerine ya da sadece boş bir alan büyü çalıştı! :) – Terry

5

Sen alabilirsiniz:

CREATE TABLE `db`.`customers` (
     `company_id` INT NOT NULL AUTO_INCREMENT , 
     `company_name` VARCHAR(40) NULL , 
     `company_number` INT NULL , 
     `company_vat` INT NULL , 
     `company_zip` INT NULL, 
    PRIMARY KEY (`company_id`)); 

Bunları hatası alıyorum Bir LOAD DATA INFILE sorgu kullanarak MySQL içine CSV dosyaları. Senin durumunda

, böyle bir şey yazarsınız:

LOAD DATA INFILE filename.txt 
INTO TABLE customers 
FIELDS TERMINATED BY ';' 
LINES TERMINATED BY '\n' 
(@id, @name, @number, @vat, @zip) 
SET 
    company_id  = (CASE WHEN @id='' THEN NULL ELSE @id END), 
    company_name = (CASE WHEN @name='' THEN NULL ELSE @name END), 
    company_number = (CASE WHEN @number='' THEN NULL ELSE @number END), 
    company_vat = (CASE WHEN @vat='' THEN NULL ELSE @vat END), 
    company_zip = (CASE WHEN @zip='' THEN NULL ELSE @zip END) 

(sen vb çizgi belirteçleri, bu ucundan bağlı olarak, bu ayarlamanız gerekebilir, ancak bu neye ihtiyacınız oldukça yakın olmalıdır