sql - 将空值传递为零
问题描述
我正在制作一个从 csv 文件中吸收值的表格。我有几个数字列,将文本转换为数字时,插入值时出现错误。
我在 csv 中有 NULL 值。有没有办法从数据库中删除它们。我手动删除它们。
空->'0'。
我试过默认。ISNULL,不知道建表的时候能不能用。我想尝试的是不再打开 csv。这样我就明白了。并且在导入数据库时,NULL 变为零。
7939102772 2401679 108271 0 3000062862 174529 8129
7939102772 2401679 108271 0 3000062862 174529 8129
7939102772 2401679 108271 0 3000062862 174529 8129
1. NULL NULL NULL NULL NULL NULL NULL
我使用:
BULK INSERT [dbo]
FROM 'C:csv'
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR='\n');
解决方案
您可以在导入时允许空值,以消除由空值插入引起的错误。如果您使用脚本或 sql 查询导入 csv,您可以将查询更新为
INSERT INTO table(Col1,Col2,Col3.....) VALUES(ISNULL(value1,0),ISNULL(value2,0),ISNULL(value3,0))
或者您可以在使用以下脚本成功导入 csv 后更新您的表格
update Tableset Col1=IIf([Col1] Is Null, "0", [Col1]),
[Col2]=IIf([Col2] Is Null, "0", [Col2]),
[Col3] =IIf([Col3] Is Null, "0", [Col3])
where [Col1] is null or [Col2] is null or [Col3] is null
最好的方法是在使用 python、jupyter 或任何您熟悉的语言导入数据库之前处理和清理您的数据。
推荐阅读
- java - Java中的Oracle查询
- kotlin - Kotlin 的 'let' 加上 elvis,以及意外的 null 返回值
- php - 多对多关系中的 Laravel 查询构建器
- java - 在 Maven 多模块项目中按层或功能打包结构?
- pandas - pandas中的多列计算
- r - R 是否有一个类似字符串的对象来公开文件 API?
- python - 为什么即使值单调增加,我也不能插值?
- json - JPA JAXRS JSON绑定反序列化错误
- twitter-bootstrap - 引导全功能/组件数据
- hyperledger-fabric - Hyperledger锯齿核心和Hyperledger锯齿军刀有什么区别?