在MySQL中导入CSV在数据中,空整数字段的默认值
技术问答
198 人阅读
|
0 人回复
|
2023-09-14
|
我在用将军CSV导入MySQL表LOAD DATAINFILE。表格的字段之一存储了我在表格结构中定义的邮政编码数据contributor_zipcode INT。7 P2 e+ W+ x+ d
在CSV这个字段有时是空的。当我执行时LOAD查询时,MySQL将发出如下警告:
3 |3 v, k3 {0 m+ l$ [0 [: aIncorrect integer value: '' for column 'contributor_zipcode' at row 180
- S& ^7 I- L; p: T v4 X我试图重新定义字段contributor_zipcode INT DEFAULT同样的警告,这将创造出来contributor_zipcode INT DEFAULT NULLMySQL不允许。有什么建议吗?7 z& Y# K3 s0 |+ n B* Q+ e
4 ]. h- Y% {. l7 P# \. M! ]+ A
解决方案: + H& m! P1 ~" W. f
空值被解释为空字符串(’‘),而不是NULL,因此,默认值没有使用。4 ^3 W/ C; [ J
如果要显式控制这些空字符串的处理,最好的办法就是将其加载到用户变量中,然后使用用户变量有条件地设置列。+ g5 j$ X7 r' C% m: g
您可以使用它将值设置为所需的任何值(NULL,0等)。
& ]& X/ @7 }% l8 D4 V; [1 _9 H假设你想把它设置为0:
1 o, S( w; T0 f: |LOAD DATA INFILE '...'INTO TABLE your_tableFIELDS TERMINATED BY ','(column_one,...,@contributor_zipcode,...,column_n)SET contributor_zipcode = IF(@contributor_zipcode='',0,@contributor_zipcode); |
|
|
|
|
|