开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Sql 导入 EXCEL 通用存储过程

简介: Sql 导入 EXCEL 通用存储过程/* --下面两句在创建存储过程时必须先执行,否则不能创建本存储过程,或者调用出错 SET ANSI_WARNINGS ON--返回警告 GO SET ANSI_NULLS ON-- 指定在对空值使用等于   (=)   和不等于   ()   比较运算符时,这些运算符的   SQL-92   遵从行为。
+关注继续查看
img_405b18b4b6584ae338e0f6ecaf736533.gif
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/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL Server 优化存储过程的七种方法
原文: SQL Server 优化存储过程的七种方法 优化存储过程有很多种方法,下面介绍最常用的7种。 1.使用SET NOCOUNT ON选项 我们使用SELECT语句时,除了返回对应的结果集外,还会返回相应的影响行数。
1137 0
删除重复记录的SQL语句
删除重复记录的SQL语句 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。 1、对于第一种重复,比较容易解决,使用 select distinct * from tableName 就可以得到无重复记录的结果集。
1157 0
【复习】sql语句的拼接 + 链接地址的简写
sql语句的拼接:    链接地址的简写:   我的GitHub地址:https://github.com/heizemingjun 我的博客园地址:http://www.cnblogs.com/chenmingjun 我的蚂蚁笔记博客地址:http://blog.
1109 0
高性能SQL分页语句
高性能SQL分页语句 第一种方法:效率最高 1 2 3 4 5 6 7 8 9 10 11 SELECT TOP 页大小 * FROM     (         SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM t.
1084 0
捷信达会员管理系统SQL语句相关
捷信达会员管理系统SQL语句相关 USE gshis GO SET ANSI_NULLS, QUOTED_IDENTIFIER ON GO /************************************************************...
1169 0
K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
0、存储过程开头变量定义 @FBeginDate varchar(10), --单据起始日期 @FEndDate varchar(10), --单据截止日期。
1072 0
SQL语句中生成UUID方法
原文:SQL语句中生成UUID方法 SQL语句中生成UUID方法为UUID()   生成带横线UUID: select UUID()                         形如:abaffaca-fd55-11e5-b3d0-d2c510923c15 生成32位不带横线UUID: ...
3606 0
T-SQL查询:语句执行顺序
原文:T-SQL查询:语句执行顺序 读书笔记:《Microsoft SQL Server 2008技术内幕:T-SQL查询》   ===============  T-SQL查询的执行顺序 ===============      =============== T-SQL查询的示意图...
789 0
+关注
杰克.陈
一个安静的程序猿~
10424
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载