Sql 导入 EXCEL 通用存储过程


Sql 导入 EXCEL 通用存储过程
/*
--下面两句在创建存储过程时必须先执行,否则不能创建本存储过程,或者调用出错
SET ANSI_WARNINGS ON--返回警告
GO
SET ANSI_NULLS ON-- 指定在对空值使用等于   (=)   和不等于   (<>)   比较运算符时,这些运算符的   SQL-92   遵从行为。
GO
--将Excel数据导入到sql数据库
--版权 : 启程 letwego.cn
--调用实例
EXEC spExcelOutIn 
@strOptions = 'In',
@strWhere = 'WHERE 房号>0',--导入/导出查询条件(包括Where 关键字)
@strExcelPath = 'd:\test.xls',--Excel的绝对路径
@strExcelSheetName = 'Sheet2',--Excel里要导入的工作表名称 如Sheet2,注意,后面不要加上$
@strExcelFiled = '单元编号,单元名称,房号,建筑面积,楼层,楼层名称,楼阁编号,业主',--Excel工作表的字段

@strSqlTableName = 'TExcelOutIn',--Sql数据库导入表名
@strSqlFiled = '单元编号,单元名称,房号编号,建筑面积,楼层,楼层名称,楼阁编号,业主编号'--Sql表的字段
*/

CREATE PROCEDURE spExcelOutIn

@strOptions varchar(200) = NULL,
@strWhere nvarchar(4000) = NULL,--导入/导出查询条件(包括Where 关键字)

@strExcelPath nvarchar(1000) = NULL,--Excel的绝对路径
@strExcelSheetName nvarchar(50) = NULL,--Excel里要导入的工作表名称 如Sheet2,注意,后面不要加上$
@strExcelFiled nvarchar(1000) = NULL,--Excel工作表的字段

@strSqlTableName nvarchar(100) = NULL,--Sql数据库导入/导出表名
@strSqlFiled nvarchar(1000) = NULL--Sql表的字段

AS

DECLARE @strSql nvarchar(4000)

IF OBJECT_ID('tempdb..##Temp') IS NOT NULL DROP TABLE ##Temp

/* 导入 */
IF @strOptions='In' AND NOT @strExcelPath IS NULL BEGIN

SET @strExcelPath = '''Microsoft.Jet.OLEDB.4.0'',''Data Source="' + @strExcelPath + '";User ID=Admin;Password=;Extended properties=Excel 5.0'''

--将数据存放到临时表(一)
SET @strSql =
'SELECT ' + @strExcelFiled +
' INTO ##Temp
FROM 
OpenDataSource('+ @strExcelPath +')'+ @strExcelSheetName +'$ '
+@strWhere

--PRINT(@strSql)
EXEC(@strSql) 

--将数据从临时表导入到sql数据库表(二,分两步可以做更多的处理)
SET @strSql = 'INSERT INTO ' + @strSqlTableName + '('+ @strSqlFiled +') SELECT * FROM ##Temp'
--PRINT(@strSql)
EXEC(@strSql) 

--SELECT * FROM ##Temp
DROP TABLE ##Temp

END

/* 导出 */
IF @strOptions='Out' AND NOT @strExcelPath IS NULL BEGIN

SET @strExcelPath = ''
--导成类似(不是真正的Excel,是文本格式)Excel的文件,这里是固定的,真正用时需要修改相关参数
--EXEC master..xp_cmdshell 'bcp "SELECT * FROM wy_福州分公司.dbo.TExcelOutIn" queryout C:\test.xls -c -S"(local)" -U"sa" -P"123"'
END
GO
 

版权说明
  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。  

  作      者:温景良

 文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

时间: 2025-01-21 07:23:54

Sql 导入 EXCEL 通用存储过程的相关文章

导入Excel电子表格数据到SQL Sever数据库的另一种方法

excel|电子表格|数据|数据库 上次给大家提供了一个从Excel电子表格导入到SQL Server数据库的方法,前提条件是机器上要装有Office 里的Excel组件.今天再为大家提供另一种方法:不需要安装Excel也可以导入到我们的SQL Server数据库.首先用SQL Server自身的数据转换功能把Excel导入到 SQL Server中,下面的示例中导入后的表名为:Sheet1$,然后我们再从这个库中把数据导入到我们自己的系统的数据表中.(这样一来就是2个SQL Server表中的

导入Excel电子表格数据到SQL Sever数据库

excel|电子表格|数据|数据库 <%'On Error Resume Next'导入Excel电子表格数据到SQL Sever数据库 By Dicky 2004-12-27 16:41:12 QQ:25941Function Open_Conn(SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName,SqlConn)'创建数据库连接对象并打开数据库连接 Dim ConnStr 'SQL Server数据库连接参数:数据库名.用户密码.用户名.

大神指导下,存储过程导入Excel,调用存储过程数据没有到入

问题描述 存储过程导入Excel,调用存储过程数据没有到入到数据库,但是在查询分析器里能到入是什么情况?.下面是代码,请大家帮忙看看是什么问题:INSERTINTOhris.dbo.temp_excel(PIA003,PIA004,PIA001,PIA006,PIA007,PIA010,PIA045,PIA046,PIA008)select结算方式,汇款日,电汇单号,厂商编码,收款单位,付款账号,币种,汇率,汇款金额FROMOPENROWSET('Microsoft.ACE.OLEDB.12.0

.net-oracle如何使用存储过程导入excel

问题描述 oracle如何使用存储过程导入excel .net程序本来导入上传的excel中的数据,数据量不大就用程序读出来再导入,现在数据量比较大 这样弄感觉不好, 请问有没有方法使用oracle存储过程实现这个数据的导入? 解决方案 使用sqlldr来导入

SQL Server 分页查询通用存储过程(只做分页查询用)_MsSql

自开始做项目以来,一直在用.这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用. /*---------------------------------------------- *procedure name : P_PageResult * author :Fay * create date : 2014-07-18 */ CREATE PROCEDURE prcPageResult -- 获得某一

sql语句导入excel到db2数据库

sql语句导入excel到db2数据库教程 //方法一 sql语句导入excel到db2数据库 import   from   "c:booknow.csv"   of   del   messages   "d:msg.out"     insert   into   lw_bin export   to   table.txt   of   del   modified   by   coldel,   select   *   from   table //方

SQL Server 分页查询通用存储过程(只做分页查询用)

自开始做项目以来,一直在用.这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用. /*---------------------------------------------- *procedure name : P_PageResult * author :Fay * create date : 2014-07-18 */ CREATE PROCEDURE prcPageResult -- 获得某一

C#中对Excel的导入导出通用类

using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; using System.Data; using System.Drawing; using System.Collections; using System.Diagnostics; using System.Dat

关于C#导入excel到sql server的问题

问题描述 上星期做的C#导入excel到sqlserver解决了重复导入信息的问题,加多一个ID列,但是发现导入了第一个excel文件的数据之后第二个导入不了了.求大神指点或解决.我的winform里只有三个控件:两个botton和一个dataGridView1usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem