读取Excel的记录并导入SQL数据库
准备一下,近段时间,需要把Excel的数据导入数据库中。
引用命名空间:
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
你可以写一个方法,是去读取Excel文档的方法,返回DataSet数据集:
private DataSet ImportExcelToDataSet(string virtualPath, string sqlQueryStatement)
{
string excelConnectionString = DB.ExcelConnectionString(Server.MapPath(virtualPath));
OleDbConnection dc = new OleDbConnection(excelConnectionString);
OleDbDataAdapter da = new OleDbDataAdapter(sqlQueryStatement, dc);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
Source Code
导入数据库,在数据库中,需要创建一个表来存储Excel导入来的数据:
接下来,你可以使作SqlBulkCopy的方法进行复制数据库:
try
{
string cs = ConfigurationManager.ConnectionStrings["InsusSqlConnectionString"].ConnectionString;
using (SqlConnection sqlConn = new SqlConnection(cs))
{
string sqlQueryStatement = "SELECT [Material],[Plnt],[Level],[Item],[Component],[Object description] FROM [Sheet1$]";
string virtualPath = "~/App_Data/Book1.xlsx"; DataSet ds = ImportExcelToDataSet(virtualPath, sqlQueryStatement); DataTable dt = ds.Tables[]; sqlConn.Open();
using (SqlBulkCopy sqlbc = new SqlBulkCopy(sqlConn))
{
sqlbc.DestinationTableName = "BOM";
sqlbc.ColumnMappings.Add("Material", "Material");
sqlbc.ColumnMappings.Add("Plnt", "Plnt");
sqlbc.ColumnMappings.Add("Level", "Level");
sqlbc.ColumnMappings.Add("Item", "Item");
sqlbc.ColumnMappings.Add("Component", "Component");
sqlbc.ColumnMappings.Add("Object description", "Object description");
sqlbc.WriteToServer(dt);
Response.Write("数据导入成功!");
}
}
}
catch (Exception ex)
{
throw ex;
}
Source Code
演示:
下面内容于2017-10-17 14:38分添加:
使用sqlDataReader来导入,没有做过多的测试,速度与DataSet快不了多少:
private OleDbDataReader ImportExcelToDataReader(string virtualPath, string sqlQueryStatement)
{
string excelConnectionString = DB.ExcelConnectionString(Server.MapPath(virtualPath));
OleDbConnection oleConn = new OleDbConnection(excelConnectionString);
OleDbCommand oleComm = new OleDbCommand(sqlQueryStatement, oleConn); oleConn.Open();
return oleComm.ExecuteReader();
}
Source Code
SqlBulkCopy的方法:
string sqlQueryStatement = "SELECT [Material],[Plnt],[Level],[Item],[Component],[Object description] FROM [Sheet1$]";
string virtualPath = "~/App_Data/Book1.xlsx"; string cs = ConfigurationManager.ConnectionStrings["InsusSqlConnectionString"].ConnectionString;
SqlConnection sqlConn = new SqlConnection(cs); OleDbDataReader reader = ImportExcelToDataReader(virtualPath, sqlQueryStatement); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn))
{
bulkCopy.DestinationTableName = "BOM";
try
{
sqlConn.Open();
bulkCopy.WriteToServer(reader);
Response.Write("数据导入成功。");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
reader.Close();
sqlConn.Close();
}
}
Source Code
读取Excel的记录并导入SQL数据库的更多相关文章
- SQL语句:把Excel文件中数据导入SQL数据库中的方法
1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...
- jsp+servlet上传excel并将数据导入到数据库表的实现方法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- C# EXCEL(.xls和.xlsx)导入到数据库
C# EXCEL(.xls和.xlsx)导入到数据库 转(http://www.cnblogs.com/bart-cai/articles/2716555.html) 原理:1.判断是否是Excel ...
- C#将Excel数据表导入SQL数据库的两种方法(转)
最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环 ...
- C#将Excel数据表导入SQL数据库的两种方法
最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环 ...
- C#将excel数据按照需求导入Sql server遇到的问题(参考而已)
1.千万不要使用永中表格(WPS没用过,这里只是个人观点,不是说永中表格的) 我在公司得到的任务是将excel数据按照需求导入数据库总共主表大概3张,所以有点复杂(列子用的简单表,公司东西还是不要放出 ...
- PHPExcel读取excel的多个sheet存入数据库
//批量导入文章 excel读取 public function importdata ( $filename, $tmp_name ) { //设置超时时间 set_time_limit(0); $ ...
- sqlserver怎么将excel表的数据导入到数据库中
在数据库初始阶段,我们有些数据在EXCEL中做好之后,需要将EXCEL对应列名(导入后对应数据库表的字段名),对应sheet(改名为导入数据库之后的表名)导入指定数据库, 相当于导入一张表的整个数据. ...
- Excel、记事本数据导入到数据库
将手机号批量导入数据库.思路:先将要导入的文件传上项目里,然后读取文件的每行数据并插入数据库,操作完后再将上传的文件删除 文件示例: Excel: 记事本: 前台代码: <div class ...
随机推荐
- PostgreSQL 10 如何使用 PgAdmin3
自从 PgAdmin4 出来以后,PgAdmin3 就停止开发了,PgAdmin 官网下载的 PgAdmin3 无法支持 PostgreSQL 10 或者更高版本的数据库服务器端. 但是 PgAdmi ...
- 用Web Services来整合.NET和J2EE
互用性(Interoperability)问题说起来容易但通常实现起来却比较困难.尽管Web service曾承诺要提供最佳的解决方案来衔接基于.NET和J2EE的应用程序,但其过程却并不简单.我们发 ...
- SEO高级技巧
原文地址:http://www.it28.cn/sousuoyinqing/853115.html 现在提起SEO来最少能让一部人感到痛苦,为什么呢,因为他们看不到希望,他们追求的永远是排名,其实SE ...
- 即时消息服务框架(iMSF)应用实例之分布式事务三阶段提交协议的实现
一,分布式事务简介 在当前互联网,大数据和人工智能的热潮中,传统企业也受到这一潮流的冲击,纷纷响应国家“互联网+”的战略号召,企业开始将越来越多的应用从公司内网迁移到云端和移动端,或者将之前孤立的IT ...
- nginx-2-nginx的反向代理
Nginx服务器的反向代理服务 nginx服务器的反向代理服务是其最常用的重要功能之一,在实际的工作当中应用广泛,涉及的指令也比较多,各类指令完成的功能也不尽相同.
- python自动化开发-7
socket编程 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对 ...
- 测试思想-流程规范 SVN代码管理与版本控制
SVN代码管理与版本控制 by:授客 QQ:1033553122 欢迎加入软件性能测试交流群(QQ群):7156436 目录 一. 二. 三. 四. 五. 六. 七. 一. 创建根目录 创建一 ...
- bash shell下最方便的字符串大小写转换方法
用tr需要新增变量,用declare或typeset需要在变量赋值前或者赋值后单独声明,都有些麻烦 此方法为bash 4.0以后新增,bash 4.0 2009年发布 $ test="abc ...
- [20180718]拷贝数据文件从dg库.txt
[20180718]拷贝数据文件从dg库.txt 1.测试环境:SCOTT@book> @ ver1PORT_STRING VERSION B ...
- python第二十四天-----作业终于完成啦
作业 1, ATM:模拟实现一个ATM + 购物商城程序 额度 15000或自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流 ...