我有一个文件,可以包含3到4列以逗号分隔的数值。空字段位于行末时会被定义为例外:
1,2,3,4,5 1,2,3,,5 1,2,3 下表是在MySQL中创建的:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS TERMINATED BY "," LINES TERMINATED BY "\n"; 结果表:
不幸的是,在这一阶段,我必须能够区分NULL和0,因此将不胜感激。
谢谢S。
编辑
SHOW WARNINGS的输出:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这将做您想要的。它将第四个字段读入局部变量,然后如果该局部变量最终包含一个空字符串,则将实际字段值设置为NULL:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS TERMINATED BY "," LINES TERMINATED BY "\n" (one, two, three, @vfour, five) SET four = NULLIF(@vfour,'') ; 如果它们都可能为空,则将它们全部读入变量并具有多个SET语句,如下所示:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS TERMINATED BY "," LINES TERMINATED BY "\n" (@vone, @vtwo, @vthree, @vfour, @vfive) SET one = NULLIF(@vone,''), two = NULLIF(@vtwo,''), three = NULLIF(@vthree,''), four = NULLIF(@vfour,'') ;来源:stack overflow