LOAD DATA INFILE(* .csv) - 忽略空单元格
问题描述:
我即将将大型(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
;
答
添加组列像这样:
LOAD DATA INFILE 'file.txt'
INTO TABLE t1
(column1, @var1)
SET column2 = @var1/100;
需要与处理该“空间中的表达式替换@ var1的/ 100 '并转换为-Infinity或0或42 ...不确定..
谢谢! 它的工作!我在手册中看到了这一部分,但我可以在你的解释中正确地做到这一点 – speendo 2011-02-09 09:57:28