Mysql加载数据:为所有或给定的列子集设置IF?

时间:2016-01-17 00:20:13

标签: mysql sql set load-data-infile

将csv文件的导入代码输入到我的8列数据库中:

Load Data LOCAL InFile 'file.csv' into table myTable
Fields Terminated by ',' 
OPTIONALLY Enclosed by '"'
Lines Terminated by '\n'
IGNORE 1 Lines
(col1, col2, @var3, @var4, col5, col6, col7, col8)
Set 
col3 = if(@var3 = '', NULL, @var3),
col4 = if(@var4 = '', NULL, @var4)
;

将空条目更改为NULL值可以正常工作,但.... 有没有办法缩短Set部分,所以我不必为每一列指定条件? 我实际上需要上面8列中的7列,这个特别的表格相当小。

1 个答案:

答案 0 :(得分:2)

  1.   

    有没有办法缩短设置部分

    是的,MySQL提供了简写功能NULLIF()

    col3 = NULLIF(@var3, '') -- etc
    
  2.   

    所以我不必为每一列指定一个条件?

    可悲的是,尽管在应用程序代码中动态生成所需的SQL应该是相当简单的。