将Excel中数据导入数据库(二)
在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小。今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有int、vachar、datetime、numeric类型,部分字段定义如下:

可见除了STCD、SPT不允许为null值外,其它字段均允许为null值。在sqlserver数据库中某字段为null值,字符串可直接插入null值,比如如下sql语句成立:
insert into WQ_PAS_A(ITMID,SMCL,WQG) values(null,null,null)
其中表WQ_PAS_A各字段定义如下:

插入结果如下:

对于int、numeric类型也能直接插入null:
insert into WQ_PCP_D (STCD,PRPNM,SPT) values('',null,'2012-12-05 08:43:00.000')
insert into WQ_PCP_D (STCD,Z,SPT) values('',null,'2012-12-05 08:43:00.000')
运行结果:

但在对于上文的strsql如果写成如下形式会报错:不能将null转换成int类型(当然null也不能转换成numeric类型)
string strSql = string.Format("Insert into WQ_PCP_D (STCD,PRPNM,SPT) Values ('{0}',{1},'{2}')", STCD, null, SPT);
当然对于这种想直接插入null,有种办法就是不插入,不插入默认就是为null。
下面是利用不插入的代码:
Hashtable ht = new Hashtable();
if (PRPNM != "") {ht.Add("PRPNM", Convert.ToInt32(PRPNM));}
if (LYNM != "") { ht.Add("LYNM", Convert.ToInt32(LYNM)); }
if (WBTP != "") {ht.Add("WBTP",Convert.ToInt32(WBTP)); }
//if (SPT != "") { ht.Add("SPT", Convert.ToDateTime(SPT)); }
if (Z != "") { ht.Add("Z", Convert.ToDecimal(Z)); }
if (Q != "") { ht.Add("Q", Convert.ToDecimal(Q)); }
if (S != "") { ht.Add("S", Convert.ToDecimal(S)); }
if (CLARITY != "") { ht.Add("CLARITY", Convert.ToDecimal(CLARITY)); }
if (AIRT != "") { ht.Add("AIRT", Convert.ToDecimal(AIRT)); }
if (WT != "") { ht.Add("WT", Convert.ToDecimal(WT)); }
if (PH != "") { ht.Add("PH", Convert.ToDecimal(PH)); }
if (DOX != "") { ht.Add("DOX", Convert.ToDecimal(DOX)); }
if (CODMN != "") { ht.Add("CODMN", Convert.ToDecimal(CODMN)); }
if (CODCR != "") { ht.Add("CODCR", Convert.ToDecimal(CODCR)); }
if (BOD5 != "") { ht.Add("BOD5", Convert.ToDecimal(BOD5)); }
if (NH3N != "") { ht.Add("NH3N", Convert.ToDecimal(NH3N)); }
if (TP != "") { ht.Add("TP", Convert.ToDecimal(TP)); }
if (TN != "") { ht.Add("TN", Convert.ToDecimal(TN)); }
if (CU != "") { ht.Add("CU", Convert.ToDecimal(CU)); }
if (ZN != "") { ht.Add("ZN", Convert.ToDecimal(ZN)); }
if (F != "") { ht.Add("F", Convert.ToDecimal(F)); }
if (SE != "") { ht.Add("SE", Convert.ToDecimal(SE)); }
if (ARS != "") { ht.Add("ARS", Convert.ToDecimal(ARS)); }
if (HG != "") { ht.Add("HG", Convert.ToDecimal(HG)); }
if (CD != "") { ht.Add("CD", Convert.ToDecimal(CD)); }
if (CR6 != "") { ht.Add("CR6", Convert.ToDecimal(CR6)); }
if (PB != "") { ht.Add("PB", Convert.ToDecimal(PB)); }
if (CN != "") { ht.Add("CN", Convert.ToDecimal(CN)); }
if (VLPH != "") { ht.Add("VLPH", Convert.ToDecimal(VLPH)); }
if (OIL != "") { ht.Add("OIL", Convert.ToDecimal(OIL)); }
if (LAS != "") { ht.Add("LAS", Convert.ToDecimal(LAS)); }
if (S2 != "") { ht.Add("S2", Convert.ToDecimal(S2)); }
if (SO4 != "") { ht.Add("SO4", Convert.ToDecimal(SO4)); }
if (CL != "") { ht.Add("CL", Convert.ToDecimal(CL)); }
if (NO3 != "") { ht.Add("NO3", Convert.ToDecimal(NO3)); }
if (FE != "") { ht.Add("FE", Convert.ToDecimal(FE)); }
if (MN != "") { ht.Add("MN", Convert.ToDecimal(MN)); }
if (COND != "") { ht.Add("COND", Convert.ToDecimal(COND)); }
if (CHLA != "") { ht.Add("CHLA", Convert.ToDecimal(CHLA)); }
if (FCG != "") { ht.Add("FCG", Convert.ToInt32(FCG)); }
if (K != "") { ht.Add("K", Convert.ToDecimal(K)); }
if (NA != "") { ht.Add("NA", Convert.ToDecimal(NA)); }
if (CA != "") { ht.Add("CA", Convert.ToDecimal(CA)); }
if (MG != "") { ht.Add("MG", Convert.ToDecimal(MG)); }
if (CO3 != "") { ht.Add("CO3", Convert.ToDecimal(CO3)); }
if (HCO3 != "") { ht.Add("HCO3", Convert.ToDecimal(HCO3)); }
if (MNDG != "") { ht.Add("MNDG", Convert.ToDecimal(MNDG)); } String strsql = "Insert into WQ_PCP_D (STCD,SPT";
string strValue = "";
foreach (String key in ht.Keys)
{ strsql += "," + key;
strValue += "," + ht[key]; }
strsql += ") values ('" + STCD +"', '" + SPT + "'";
strsql += strValue;
strsql += ")";
查看代码
对于Excel中小数点后具体较长的数字,比如:0.00002中,如果是在Excel中是常规表示,则读出来可能是形如2e-05形式,这样形式再转换为decimal形式为报错,所以最好将Excel中保存成带几位小数点的数值形式:

对于这种多行导入时,在用VS调试的时候,必定会用到设置条件断点调试,这里有篇文章来介绍设置条件断点调试。
相关文章:
(2)将Excel中数据导入数据库(二)
将Excel中数据导入数据库(二)的更多相关文章
- 将Excel中数据导入数据库(三)
上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入.比如表WQ_SWMSAR_A字段 ...
- 将Excel中数据导入数据库(一)
在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...
- SpringBoot通过Ajax批量将excel中数据导入数据库
Spring Boot通过Ajax上传Excel并将数据批量读取到数据库中 适合场景:需要通过excel表格批量向数据库中导入信息 操作流程 [1]前端上传一个excel表格 [2] 后端接收这个ex ...
- Excel表数据导入数据库表中
***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为 ...
- mysqlconnector将EXCEL表数据导入数据库
测试excel和脚本放在同一个目录 测试excel和脚本放在同一个目录 #!/usr/bin/env python #coding=utf-8 import xlrd import mysql.con ...
- excel表格数据导入数据库Oracle
方法一: 1.创建数据表 CREATE TABLE T_USER ( ID VARCHAR2(32) primary key, NAME VARCH ...
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
读取Excale表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; ...
- larave5.6 将Excel文件数据导入数据库代码实例
<?php namespace App\Admin\Controllers; use App\AdminUser; use Illuminate\Http\Request; use Excel; ...
- java后端服务器读取excel将数据导入数据库
使用的是easypoi,官网文档:http://easypoi.mydoc.io/ /** * 导入Excel文件 */ @PostMapping("/importTeacher" ...
随机推荐
- Learning Puppet — Resource Ordering
Learning Puppet — Resource Ordering Learn about dependencies and refresh events, manage the relation ...
- 迁移学习(Transfer Learning)(转载)
原文地址:http://blog.csdn.net/miscclp/article/details/6339456 在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型 ...
- 战胜忧虑<1>——不要让忧郁侵入你的生活
1.不要让忧郁侵入你的生活. 备注:忧郁:一种情绪与心理状态,指一个人呈现哀伤.心情低落的状况,绝望与沮丧为其特色. 解决方法:奥斯勒博士说的那样:用铁门把过去和未来隔断,生活在完全独立的今天. 现在 ...
- mssql查询某个值存在某个表里的哪个字段的值里面
第一步:创建 查询某个值存在某个表里的哪个字段的值里面 的存储过程 create proc spFind_Column_In_DB ( @type int,--类型:1为文字类型.2为数值类型 )-- ...
- JavaScript中Eval()函数的使用
Eval()常用的几种形式 1.我们预先不知道要执行什么语句,只有当条件和参数给时才知道执行什么语句,这时候eval就派上用场了. function output(a, b) { var tmpa, ...
- capture同focus
SetCapture函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获.一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内.同一时刻只能有一个窗口捕获鼠标.如果鼠标光标在另一 ...
- POJ 3368 Frequent values RMQ 训练指南 好题
#include<cstdio> #include<cstring> ; const int inf=0x3f3f3f3f; inline int max(int x,int ...
- DDoS-Deflate安装及配置
(D)DoS-Deflate是一款免费的用来防御和减轻DDoS攻击.它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或iptables禁止或 ...
- vim使用快捷键
vim使用快捷键 索引 1. 关于Vim 1.1 Vim的几种模式 2. 启动Vim 3. 文档操作 4. 光标的移动 4.1 基本移动 4.2 翻屏 4.3 标记 5. 插入文本 5.1 基本插入 ...
- Win7家庭版开启Administrator管理员帐户的方法
Win7家庭版开启Administrator管理员帐户的方法 发布时间:2014-11-17 18:30:06来源:系统盒浏览数:2786 很多用户安装好Win7系统第一步就是开启Administra ...