我有一个文件,其中可以包含 3 到 4 列用逗号分隔的数值。空字段定义为例外,当它们位于行尾时:
1,2,3,4,5
1,2,3,,5
1,2,3
下表是在 MySQL 中创建的:
+-------+--------+------+------+---------+--------+ | 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 | +-------+--------+------+------+---------+--------+ | 一个 | 整数(1) | 是 | | 空 | | | 二 | 整数(1) | 是 | | 空 | | | 三 | 整数(1) | 是 | | 空 | | | 四 | 整数(1) | 是 | | 空 | | | 五 | 整数(1) | 是 | | 空 | | +-------+--------+------+------+---------+--------+
我正在尝试使用 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 | 空 | 空 | +------+------+--------+------+------+
问题在于,当原始数据中的字段为空且未定义时,MySQL 出于某种原因不使用列默认值(即 NULL)并使用零。当字段全部丢失时,正确使用 NULL。
不幸的是,在这个阶段我必须能够区分 NULL 和 0,所以任何帮助都将不胜感激。
谢谢S。
编辑
显示警告的输出:
+---------+------+-------------------------------- ------------------------------------+ | 水平 | 代码 | 留言 | +---------+------+-------------------------------- ------------------------------------+ | 警告 | 第1366章 不正确的整数值:第 2 行的列 'four' 的 '' | | 警告 | 第1261章 第 3 行不包含所有列的数据 | | 警告 | 第1261章 第 3 行不包含所有列的数据 | +---------+------+-------------------------------- ------------------------------------+