适配问题

有个表中间有字段是int类型,收到的数据那个地方是空值(不是null),插入进去变成了0,0不符合业务需求,现在想变成插入进去就算null,怎么实现,改sql_mode吗

测试&&说明:
8fdb75b2df46ef8e7f275bfca5f693c


如何把中间这个id,,执行那种插入,那个地方插入个Null

改个数据类型不香吗

你这个是不是程序上做转化了,这个空这不是insert进去就是null了?

如果是固定列加上下面的判断
load data LOCAL infile ‘example_data1.txt’
into table ttt
FIELDS TERMINATED BY ‘;’
OPTIONALLY ENCLOSED BY ‘’
LINES TERMINATED BY ‘\n’
(@col1,col2,@col3,col4)
set col1=if(@col1=’’,11,@col1),col3=if(@col3=’’,null,@col3);

2赞

要不就该数据类型、要么就insert 时判断

是的目前初步感觉是在插入数据库之前,数据被加载时就空值变成0了

如果是loaddata你就按上面的测试一下,会把空转化成null,不会成0;

嗯嗯,看起来lodaddata你这样就行

程序中SQL怎么写的呢?

loaddata会导入很多表,现在也不确定哪些表的哪些字段是空值,有什么通用的写法吗

loaddata导入数据

目前没有太好的办法,可以先检查下哪些有空,然后拼出来每张表单独的loaddata语句;

很多方法都可以搞定,但是金融场景,要求比较严格,这不许,那也不许,目前只能在每个loaddata下面if了

目前的问题 是用loaddata 解决了?

目前第一种方式:在txt文件里面批量将分隔符中间的空值变成\N;第二种方式:像上面哪个老哥一样在loaddata结尾添加逻辑判断,空就转化为null,(这两种方式是因为无法设置上游txt文件的生成,以及不能更换非loaddata的其他导入方式

哦哦,:+1::+1::+1: