我有一个文件,可以包含3至4列的数值,它们由逗号分隔。当空字段位于行的末尾时,将定义一个异常:
1,2,3,4,5
1,2,3,,5
1,2,3
下表是在 MySQL 中创建的:
+-------+--------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+-------+ | one | int(1) | YES | | NULL | | | two | int(1) | YES | | NULL | | | three | int(1) | YES | | NULL | | | four | int(1) | YES | | NULL | | | five | int(1) | YES | | NULL | | +-------+--------+------+-----+---------+-------+
我正在尝试使用 MySQL LOAD 命令加载数据:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
由此产生的表格:
+------+------+-------+------+------+ | one | two | three | four | five | +------+------+-------+------+------+ | 1 | 2 | 3 | 4 | 5 | | 1 | 2 | 3 | 0 | 5 | | 1 | 2 | 3 | NULL | NULL | +------+------+-------+------+------+
问题在于,当原始数据中的字段为空且未定义时,MySQL 出于某种原因不使用列默认值(即 NULL) ,而使用零。当字段完全丢失时,正确使用 NULL。
不幸的是,在这个阶段,我必须能够区分 NULL 和0,所以任何帮助都是值得感激的。
谢谢 是的。
编辑
显示警告的输出:
+---------+------+--------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------+ | Warning | 1366 | Incorrect integer value: '' for column 'four' at row 2 | | Warning | 1261 | Row 3 doesn't contain data for all columns | | Warning | 1261 | Row 3 doesn't contain data for all columns | +---------+------+--------------------------------------------------------+