1、查询Excel数据
SELECT *
FROM openrowset('MICROSOFT.JET.OLEDB.4.0',
'Excel 5.0;HDR=YES;DATABASE=c:\aa.xls','select * from [sheet1$]')
SELECT *
FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]
2、查询到的数据导成一个Excel文件
A.BCP
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
B、PROC
/*--数据导出EXCEL
导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件
,如果文件不存在,将自动创建文件
,如果表不存在,将自动创建表
基于通用性考虑,仅支持导出标准数据类型
--邹建 2003.10--
--flystone 修正当文件存在时创建失败的情况
*/
/*--调用示例
p_exporttb @sqlstr='select * from 地区资料'
,@path='c:\',@fname='aa.xls',@sheetname='地区资料'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_exporttb]
GO
create proc sp_exporttb
@sqlstr varchar(8000),--查询语句,如果查询语句中使用了order by ,请加上top 100 percent,注意,如果导出表/视图,用上面的存储过程
@path nvarchar(1000),--文件存放目录
@fname nvarchar(250),--文件名
@sheetname varchar(250)=''--要创建的工作表名,默认为文件名
as
declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)
--参数检测
if isnull(@fname,'')=''set @fname='temp.xls'
if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')
--检查文件是否已经存在
if right(@path,1)<>'\' set @path=@path+'\'
create table #tb(a bit,b bit,c bit)
set @sql=@path+@fname
insert into #tb exec master..xp_fileexist @sql
--数据库创建语句
set @sql=@path+@fname
--if exists(select 1 from #tb where a=1)
-- set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'
-- +';CREATE_DB="'+@sql+'";DBQ='+@sql
--else
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES'
+';DATABASE='+@sql+'"'
--连接数据库
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err<>0 goto lberr
exec @err=sp_oamethod @obj,'open',null,@constr
if @err<>0 goto lberr
--创建表的SQL
declare @tbname sysname
set @tbname='##tmp_'+convert(varchar(38),newid())
set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'
exec(@sql)
select @sql='',@fdlist=''
select @fdlist=@fdlist+','+a.name
,@sql=@sql+',['+a.name+'] '
+case when b.name in('char','nchar','varchar','nvarchar') then
'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'
when b.name in('tynyint','int','bigint','tinyint') then 'int'
when b.name in('smalldatetime','datetime') then 'datetime'
when b.name in('money','smallmoney') then 'money'
else b.name end
FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype
where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')
and a.id=(select id from tempdb..sysobjects where name=@tbname)
if not exists(select 1 from #tb where a=1)
begin
select @sql='create table ['+@sheetname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr
end
else
set @fdlist=substring(@fdlist,2,8000)
exec @err=sp_oadestroy @obj
--导入数据
set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES
;DATABASE='+@path+@fname+''',['+@sheetname+'$])'
exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')
set @sql='drop table ['+@tbname+']'
exec(@sql)
return
lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
lbexit:
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述
select @sql,@constr,@fdlist
go
3、往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)
相关推荐
总之,SQL Server通过OLEDB提供程序可以直接读取和操作Excel文件,但这通常适用于小规模、临时性的数据处理。对于大规模或长期的数据管理,推荐将数据导入数据库或使用ETL工具进行更高效和安全的处理。
标题“用Excel操作SQLServer数据”揭示了一个独特的技术应用场景,即使用Microsoft Excel作为工具来管理和交互SQL Server数据库。这种操作方式通常涉及到Excel的VBA(Visual Basic for Applications)宏编程,使得...
NPOI SQLServer Excel是一个关于使用NPOI库在.NET环境中与Excel进行数据交互,并结合SQLServer数据库进行数据导入导出的技术主题。NPOI是一个开源的.NET库,专门用于处理Microsoft Office文件,如Excel(XLS和XLSX...
本主题主要探讨的是如何在Excel和SQL Server之间进行数据的导入与导出操作,以及相关的C#编程技术。 首先,Excel到SQL Server的导出通常用于将Excel中的数据批量导入到数据库中。这在数据分析、报表生成或者系统...
总结来说,"Excel导入SQLserver源码_excel2sql.zip"提供了将Excel数据批量导入到SQL Server的自动化解决方案,减少了手动操作的繁琐,提高了工作效率。通过理解和使用这样的工具,我们可以更好地管理和利用大量的...
用Excel操作SQLServer,比较实用。是一个Excel文件(.xls文件),启用宏后,输入几个参数就可以将该文件连接到SQLServe数据库,然后可以读取、修改、删除SQLServe数据库表中数据。
SqlServer常用操作SqlServer常用操作SqlServer常用操作SqlServer常用操作SqlServer常用操作SqlServer常用操作SqlServer常用操作SqlServer常用操作
用sql server读取和写入excel文件,读取和写入数据非常方便,大批量数据导入与导出非常快
- **标签解读**:这些标签有助于快速识别本文的主题,即关于SQL Server数据库环境下如何执行表数据导出操作的相关知识。 #### 存储过程解析: 首先,我们来看一下存储过程的部分代码,这将有助于我们更好地理解...
### SQL Server导入Excel数据的方法详解 #### 一、前言 在日常工作中,我们经常会遇到需要将Excel数据导入到SQL Server数据库中的情况。这不仅能够提高数据处理的效率,还能确保数据的一致性和准确性。本文将详细...
如何通过Excel来获取SQLServer数据 方便对数据库中的某些数据取数!
本压缩包“用Excel操作SQLServer数据.zip”很显然是关于如何在Excel中连接并操作SQL Server数据库的教程或指南。以下将详细阐述这个主题中的关键知识点。 首先,要实现Excel与SQL Server之间的交互,你需要了解ODBC...
标题提到的“Excel根据表格,批量生成sqlserver语句,生成建表语句,自行到数据库中执行”,就是一种利用Excel宏自动化生成SQL Server建表语句的方法。这种方法适用于已有数据结构清晰的Excel表格,通过特定的规则...
在给定的项目中,"将SQL server数据写入excel表"是一个具体的实现,它利用C++ Builder 2010这一集成开发环境,将数据从SQL Server数据库导出并存储到Excel表格中。这涉及到多个技术层面,包括数据库连接、查询执行、...
然而,在实际操作中,我们常常需要将Excel表格中的数据导入到SqlServer数据库中,这正是XlsToSql工具发挥作用的地方。 XlsToSql是一款专门设计用于将Excel数据高效、便捷地导入到SqlServer的工具,它的出现极大地...
总结起来,从SQL Server导出数据到Excel主要涉及使用SQL Server Management Studio进行数据导出操作,通过SQL Server导入和导出数据向导配置数据源和目标,以及映射和预览数据。了解并掌握这一过程对于数据库管理员...
Excel导入SQLserver源码 Excel是一种非常灵活的电子表格软件,用它可以存储各种数据,本节将对如何将Excel导入SQL Server2000数据库进行详细介绍。 开发环境:NET2.0 开发工具:vs2005 开发语言:c# 数据库:server...
在提供的压缩文件"impexcel"中,可能包含了导入Excel到SQL Server的示例脚本或教程文档,建议详细阅读并按照步骤操作,以加深理解和掌握这一技能。记住,不断学习和实践是成为IT专业人士的关键。
Web页面中sqlserver快速导入excel,生成csv格式 有的程序在Web页SQLSERVER导入excel的过程中,会出现下载时找不到样式的错误提示。本资源避免了以上问题,快速打开,快速导出。 c#.Net2005下运行成功。
设置SQLServer2008(64位),SQL直接读取Excel文件数据