`

如何利用SQL查询语句从SQLSERVER数据库中导入导出EXCEL表格

 
阅读更多

如何利用SQL查询语句从SQLSERVER数据库中导入导出EXCEL表格

平常从SQLSERVER中进行导入导出时,我们利用SQLSERVER中自带的DTS转换工具即可,很方便。但有些特殊的用法需要用语句进行导入导出,工作中碰到这种情况,查了些资料,下面详细介绍:

一、从excel表导入到SQLSERVER

use test
go
select * into test_table from
OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\11.xls;','select * from [结果$]')


--1.通过Sql Server查询分析器查询D:\abc.xls 里面表 sheet1
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\abc.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

--2.如果表a存在,并且表a的结构与上一步的查询的结构一样
可以使用
insert into a SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\abc.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

--3.如果表a不存在,使用into a
SELECT * into a FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\abc.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]


说明: test_table为SQLSERVER数据库中的表,11.xls是EXCEL表, [结果$]是EXCEL表中的工作表,注意写法是工作表名加上$符号。

2从SQLSERVER数据库中导出到EXCEL(一般用语句导库是在应用程序中,利用各种语言实现,如果不做开发项目,用DTS就很好了,在

SQLSERVER查询器中利用单条SQL语句实现导入导出不方便,类型转换是个问题,不好解决)

第一种,无法导入字段名:(excel表不存在,新建)
EXEC   master..xp_cmdshell 
  'bcp   zhouzhi.dbo.数据库表名   out   "c:\test.xls"  /c   /S "服务器名"   /U "用户名"   -P "密码" '


第二种,excel文件已存在,要手工把表字段名填到excel文件中去,再执行下面:

insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=YES;DATABASE=c:\文件名.xls',sheet1$)
select * from 表名

第三种,想实现全自动转字段名和记录,一条语句实现不了,要用到过程,当然如果要做一个自动转换程序,用VB或者VC语言也可实现。

把下面的过程全拷入SQLSERVER查询分析器,执行,生成一个过程,过程名为:p_exporttb ,然后按应用例子执行过程就OK了,自
动导表

/*******************************/
  
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_exporttb]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1) 
   drop   procedure   [dbo].[p_exporttb]  
   GO  
     
   create   proc   p_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 8.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   like   '%char'    
         then   case   when   a.length>255   then   'memo'  
           else   'text('+cast(a.length   as   varchar)+')'   end  
         when   b.name   like   '%int'   or   b.name='bit'   then   'int'  
         when   b.name   like   '%datetime'   then   'datetime'  
         when   b.name   like   '%money'   then   'money'  
         when   b.name   like   '%text'   then   'memo'  
         else   b.name   end  
   FROM   tempdb..syscolumns   a   left   join   tempdb..systypes   b   on   a.xtype=b.xusertype 
   where   b.name   not   in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp') 
     and   a.id=(select   id   from   tempdb..sysobjects   where    name=@tbname)  
    
   if   @@rowcount=0   return  
    
   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  
    
   exec   @err=sp_oadestroy   @obj  
    
   --导入数据  
   set   @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.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 


/*******************应用例子***************************/   


p_exporttb   @sqlstr='select   *   from   贷款大户表'  
       ,@path='c:\',@fname='aa.xls',@sheetname='贷款大户表'


分享到:
评论

相关推荐

    SQL Server数据库查询自动导出发送工具

    《SQL Server数据库查询自动导出发送工具》 在IT行业中,数据管理与分析是至关重要的环节,而SQL Server作为一款广泛使用的数据库管理系统,为数据处理提供了强大的支持。本篇文章将详细解析一个名为“SQL Server...

    百万级数据在Excel和Sql数据库之间相互导入、导出

    3. **T-SQL语句**:使用Transact-SQL(T-SQL)可以直接从Excel文件导入数据到SQL Server表,或者将数据导出到CSV文件,再由Excel打开。例如,BULK INSERT命令适用于大批量导入,而SELECT INTO语句可用于创建新表并...

    SQLServer数据库表中数据导出成SQL语句工具

    针对这个需求,存在一种名为“SQLServer数据库表中数据导出成SQL语句工具”的实用程序,它能够帮助我们高效地完成这项任务。这个工具通常以MHT(Multi-Part/Related)格式提供,这是一种单一文件Web页面存储格式,...

    从SQLSERVER数据库中导出记录生成insert into 语句

    从SQLSERVER数据库中导出记录生成insert into 语句

    SQL Server数据库导入导出技术

    总结来说,SQL Server的导入导出技术涵盖了从简单的SQL语句到复杂的SSIS包,为用户提供了广泛的选择。选择哪种方法主要取决于数据量、数据复杂性、性能需求以及是否需要进行数据转换。对于小型项目或简单任务,...

    将Excel文件导入到数据库中或将数据库中文件导出Excel中

    1. 查询数据:使用SQL语句查询需要导出的数据,可以是整个表,也可以是满足特定条件的部分数据。 2. 输出格式设置:确定数据导出的格式,例如CSV或TSV,这两种格式可以用Excel直接打开。 3. 执行导出:通过数据库...

    用sql语句由excel表往sqlserver数据库表中导数据

    ### 使用SQL语句将Excel数据导入SQL Server数据库 在日常工作中,经常需要处理不同格式的数据文件,例如将Excel表格中的数据导入到SQL Server数据库中。本文将详细介绍如何使用SQL语句实现这一操作。 #### 一、...

    从SQLServer数据库导出SQL语句

    5. **文件"从SQLServer数据库导出SQL语句.exe"**: 这个文件名暗示可能是一个实用程序,专门用于从SQL Server数据库导出SQL语句。如果这是你正在寻找的工具,使用前务必确认其来源安全,避免引入恶意软件。 总的来...

    SQL Server SQL语句导入导出大全

    简介:微软 SQL Server 数据库 SQL 语句导入导出大全,包括与其他数据库和文件的数据的导入导出。下面是 SQL Server SQL 语句导入导出大全的详细知识点。 导出到 Excel 为了将数据导出到 Excel,使用 EXEC master....

    从SQLServer数据库导出SQL语句的程序

    4. 生成SQL脚本:点击“导出”或类似按钮,程序会自动生成一个包含所有选定对象的SQL脚本文件,这个文件就是`从SQLServer数据库导出SQL语句.exe`。 5. 使用和保存脚本:生成的SQL脚本可以保存到本地,供后续在其他...

    将sqlserver中的数据导出成为sql语句

    标题提到的“将sqlserver中的数据导出成为sql语句”是指将SQL Server数据库中的表结构和数据转换为一系列的INSERT INTO SQL语句,这样就可以通过执行这些语句在另一个数据库中重建相同的数据。这一过程对于开发、...

    asp.net导入导出excel表,导入到sql数据库

    以上就是关于“asp.net导入导出excel表,导入到sql数据库”的详细解析,涵盖了从数据的导出到导入的整个流程,希望对你的项目有所帮助。在实际开发中,务必注意错误处理和异常捕获,确保数据的完整性和安全性。

    在SQL Server数据库之间进行数据导入导出

    在SQL Server数据库之间进行数据导入导出是数据库管理中常见的操作,主要目的是为了数据备份、迁移、合并或者处理跨数据库的数据需求。以下详细介绍几种常用的方法。 1. **使用SELECT INTO导出数据** SELECT INTO...

    asp将EXCEL导入导出数据库原程序

    这个"asp将EXCEL导入导出数据库原程序"提供了一个解决方案,能够方便地将Excel中的数据存入MSSQL数据库,同时也能将数据库中的数据导出到Excel文件。 首先,我们需要了解如何使用ASP连接MSSQL数据库。通常,这涉及...

    EXCEL与SQL SERVER 的导入与导出

    首先,Excel到SQL Server的导出通常用于将Excel中的数据批量导入到数据库中。这在数据分析、报表生成或者系统初始化时非常有用。导出过程涉及的关键步骤包括连接到SQL Server数据库,创建目标表(如果不存在),然后...

    delphi实现excel和SQLserver数据的导入导出

    数据导入是指将外部数据源(如Excel文件)的数据转移到另一个系统(如SQL Server数据库)的过程,而数据导出则相反,是从系统中提取数据并保存到外部文件。在Delphi中,我们可以利用各种组件和库来实现这两个功能。 ...

    直接使用SQL语句读取Excel表格内容,把表中内容导入数据库中

    根据给定的文件信息,我们可以深入探讨如何使用SQL语句直接读取Excel表格内容,并将这些数据导入到数据库中。这一技术在数据迁移、数据整合以及报表自动化等场景下非常实用。下面,我们将详细解析这一过程中的关键...

    C# WINFORM 操作Sql Server 数据库,xls csv txt 导入导出

    本教程将重点关注如何在C#的WinForm应用中操作SQL Server数据库,并实现Excel(xls)、CSV和TXT文件的导入导出功能。这在数据处理、报表生成以及数据交换等场景中非常实用。 首先,要与SQL Server进行交互,你需要...

    excel导入sql server数据库源码

    本主题涉及的核心知识点是如何将Excel中的数据导入到SQL Server数据库中,以及实现这一过程的源码。 1. Excel与SQL Server的关系: Excel是一种电子表格应用程序,适合小型数据集的管理和分析,而SQL Server是一个...

    导出excel.XLS表格数据到MS SQLSERVER数据库中.zip

    这个压缩包文件"导出excel.XLS表格数据到MS SQLSERVER数据库中.zip"包含了完成这一过程所需的资源,比如宏模块(Module1.bas)、表单(Form1.frm)以及一个Excel工作簿(che.xls)。下面我们将详细讲解这个过程涉及...

Global site tag (gtag.js) - Google Analytics