我正在将CSV导入到MySQL表中LOAD DATA INFILE.其中一个表的字段存储了我在表结构中定义的邮政编码数据contributor_zipcode INT.
在CSV中,此字段有时为空.当我执行LOAD查询时,MySQL会抛出一个警告:
Incorrect integer value: '' for column 'contributor_zipcode' at row 180
我已经尝试重新定义字段contributor_zipcode INT DEFAULT '0',这会产生相同的警告,并且contributor_zipcode INT DEFAULT NULLMySQL不会允许.有什么建议?
Ike*_*ker 12
空值被解释为空字符串(''),而不是NULL,因此未使用默认值.
如果要显式控制这些空字符串的处理,最好的做法是将它们加载到用户变量中,然后使用用户变量有条件地设置列.
您可以使用它将值设置为您想要的值(NULL,0等).
这是一个示例,假设您要将其设置为0:
LOAD DATA INFILE '...'
INTO TABLE your_table
FIELDS TERMINATED BY ','
(column_one,..., @contributor_zipcode,..., column_n)
SET contributor_zipcode = IF(@contributor_zipcode='',0,@contributor_zipcode);
Run Code Online (Sandbox Code Playgroud)