使用UCanAccess从大文本文件导入数据时无法正确处理Null值的求助
UCanAccess从大文本文件导入数据时无法正确处理Null值的求助
因为积分不够没法在原讨论下评论,我只能新开一个帖子求助。
我已经按照原讨论里的代码实现了(感谢Gord Thompson),但现在遇到了Null值处理的问题:不管我在CSV字段里写不带引号的null,还是直接留空,都没法导入到预定义表的可空double类型字段里。哪怕我自己实现了com.healthmarketscience.jackcess.util.ImportFilter也没用。
我查看Jackcess 4.0.0 JAR里的com.healthmarketscience.jackcess.impl.ColumnImpl代码,发现问题出在ColumnImpl::toNumber方法里——当遇到Null值时,它返回的是BigDecimal.ZERO,这显然不是Null。
不过现在我的代码其实是在ColumnImpl::toNumber方法末尾的这条语句报错:
return Double.valueOf(value.toString());
这说明到这一步我传入的不是Null,只是空字符串。我可以在ImportFilter的实现里覆盖这个逻辑,但如刚才所说,最终还是会返回非Null的BigDecimal.ZERO。
我目前能想到的办法只有先导入特殊值,之后再用更新查询把它们转成Null,或者用Access表/字段级的宏,但测试下来导入数据时这些宏好像不会触发。这两个方案都不太理想,要是能正确处理Null值就好了。
有没有什么解决思路?
谢谢,
Matthew
P.S. 想@Gord Thompson但好像因为积分不够没法用@功能。
备注:内容来源于stack exchange,提问作者lastfreedom




