如何在H2数据库CSVREAD操作中正确识别并处理NULL值
问题原因
H2内置的CSVREAD函数默认仅识别CSV中的空单元格为SQL NULL值,你现有CSV文件中第三列写的NULL会被直接解析为字符串字面量,尝试转换为BIGINT类型时就会触发类型转换报错。
解决方案
方案1:修改CSV文件(无需调整导入语句)
将CSV中需要表示空值的位置留空,删除对应位置的NULL字符即可,修改后的CSV内容如下:
Company,No,DW_Batch "TURA, US - LIVE",111309, "TURA, US - LIVE",211226,
方案2:保留CSV现有内容,调整导入语句指定空值标识
使用CSVREAD函数的第三个参数配置nullString属性,指定将字符串NULL识别为空值,修改后的导入语句如下:
String populateCustomer = """insert into Customer_V select * from CSVREAD('src/test/resources/nav_customers.csv', null, 'nullString=NULL')""" sql.executeInsert(populateCustomer);
- 补充说明:如果你的CSV中使用小写
null表示空值,对应修改参数为nullString=null即可,参数值需要和CSV中空值的写法完全匹配。
内容的提问来源于stack exchange,提问作者pbuchheit
相关产品推荐
相关产品推荐

