1
我即將將大型(500 MB)* .csv文件導入到MySQL數據庫。LOAD DATA INFILE(* .csv) - 忽略空單元格
我就認爲:
LOAD DATA INFILE '<file>'
REPLACE
INTO TABLE <table-name>
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES (#Header
<column-name1>,
<column-name2>,
...
);
我有一個問題與coluns之一(它的數據類型爲int) - 我得到一個錯誤信息:
錯誤代碼:1366錯誤的整數值:''用於列的行
我看着* .csv文件中的這一行。導致錯誤的單元格里面只有一個空格(如下所示:...;; ...)。
如何讓SQL忽略此列中的空格?由於* .csv文件非常大,而且我必須在之後導入更大的文件,所以我想避免編輯* .csv-file;我正在尋找一個SQL解決方案。
謝謝!
[編輯] 解決辦法是:
LOAD DATA INFILE '<file>'
REPLACE
INTO TABLE <table-name>
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES (#Header
<column-name1>,
<column-name2>,
@var1 #the variable that causes the problem
...
)
SET <column-name-of-problematic-column> = CASE
WHEN @var1 = ' ' THEN NULL
ELSE @var1
END
;
謝謝! 它的工作!我在手冊中看到了這一部分,但我可以在你的解釋中正確地做到這一點 – speendo 2011-02-09 09:57:28