我有一个文件,该文件可以包含3到4列以逗号分隔的数值。当空字段位于行末时,将定义为空字段:
1,2,3,4,5
1,2,3,,5
1,2,3
下表是在MySQL中创建的:
+ ------- + -------- + ------ + ----- + --------- + ------- + | 领域 类型 空| 关键 默认值| 额外| + ------- + -------- + ------ + ----- + --------- + ------- + | 一| int(1)| 是的 | NULL | | | 二| int(1)| 是的 | NULL | | | 三| int(1)| 是的 | NULL | | | 四 int(1)| 是的 | NULL | | | 五| int(1)| 是的 | NULL | | + ------- + -------- + ------ + ----- + --------- + ------- +
我正在尝试使用MySQL LOAD命令加载数据:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
结果表:
+ ------ + ------ + ------- + ------ + ------ + | 一| 二| 三| 四 五| + ------ + ------ + ------- + ------ + ------ + | 1 | 2 | 3 | 4 | 5 | | 1 | 2 | 3 | 0 | 5 | | 1 | 2 | 3 | NULL | NULL | + ------ + ------ + ------- + ------ + ------ +
问题在于,当原始数据中的字段为空且未定义时,MySQL由于某种原因不会使用列默认值(为NULL),而是使用零。当字段全部丢失时,正确使用NULL。
不幸的是,在这个阶段,我必须能够区分NULL和0,所以将不胜感激。
谢谢S。
编辑
SHOW WARNINGS的输出:
+ --------- + ------ + -------------------------------- ------------------------ + | 级别| 代码 留言| + --------- + ------ + -------------------------------- ------------------------ + | 警告| 1366 | 错误的整数值:“”对于第2行的“四”列 | 警告| 1261 | 第3行未包含所有列的数据| | 警告| 1261 | 第3行未包含所有列的数据| + --------- + ------ + -------------------------------- ------------------------ +
LOAD DATA
。有关数据架构更改,请参见d6tstack SQL示例部分。