概述
c#中高效的excel导入sqlserver的方法
将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒左右,而真正的导入过程只需要4.5秒。
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.OleDb;
namespace WindowsApplication2
{
}
上面的TransferData基本可以直接使用,如果要考虑周全的话,可以用oledb来获取excel的表结构,并且加入ColumnMappings来设置对照字段,这样效果就完全可以做到和sqlserver的dts相同的效果了。
获取excel结构的方法可以参考我先前的文章
http://blog.csdn.net/jinjazz/archive/2008/05/13/2441635.aspx
===================================================
--SQL SERVER 和EXCEL的数据导入导出
--1、在SQL SERVER里查询Excel数据:
-- ======================================================
SELECT
*
FROM
OpenDataSource(
'Microsoft.Jet.OLEDB.4.0'
,
'Data Source="c:book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0'
)...[Sheet1$]
--下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT
*
FROM
OpenDataSource (
'Microsoft.Jet.OLEDB.4.0'
,
'Data Source="c:Financeaccount.xls";User ID=Admin;Password=;Extended properties=Excel 5.0'
)...xactions
-------------------------------------------------------------------------------------------------
--2、将Excel的数据导入SQL server :
-- ======================================================
SELECT
*
into
newtable
FROM
OpenDataSource(
'Microsoft.Jet.OLEDB.4.0'
,
'Data Source="c:book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0'
)...[Sheet1$]
实例:
SELECT
*
into
newtable
FROM
OpenDataSource(
'Microsoft.Jet.OLEDB.4.0'
,
'Data Source="c:Financeaccount.xls";User ID=Admin;Password=;Extended properties=Excel 5.0'
)...xactions
-------------------------------------------------------------------------------------------------
--3、将SQL SERVER中查询到的数据导成一个Excel文件
-- ======================================================
--T-SQL代码:
EXEC
master..xp_cmdshell
'bcp 库名.dbo.表名out c:Temp.xls -c -q -S"servername" -U"sa" -P""'
--参数:S 是SQL服务器名;U是用户;P是密码
--说明:还可以导出文本文件等多种格式
实例:
EXEC
master..xp_cmdshell
'bcp saletesttmp.dbo.CusAccount out c:temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC
master..xp_cmdshell
'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C: authors.xls -c -Sservername -Usa -Ppassword'
--在VB6中应用ADO导出EXCEL文件代码:
--Dim cn As New ADODB.Connection
--cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
--cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:DT.xls -c -Sservername -Usa -Ppassword'"
------------------------------------------------------------------------------------------------
--4、在SQL SERVER里往Excel插入数据:
-- ======================================================
insert
into
OpenDataSource(
'Microsoft.Jet.OLEDB.4.0'
,
'Data Source="c:Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0'
)...table1 (A1,A2,A3)
values
(1,2,3)
--T-SQL代码:
INSERT
INTO
OPENDATASOURCE(
'Microsoft.JET.OLEDB.4.0'
,
'Extended Properties=Excel 8.0;Data source=C:traininginventur.xls'
)...[Filiale1$]
(bestand, produkt)
VALUES
(20,
'Test'
)
最后
以上就是包容小笼包为你收集整理的c#中高效的excel导入sqlserver的方…的全部内容,希望文章能够帮你解决c#中高效的excel导入sqlserver的方…所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复