回答

收藏

在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);
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则