精华内容
下载资源
问答
  • sql查询结果导出excel

    千次阅读 2012-04-14 14:32:37
    exec p_exporttb @sqlstr='sql语句',@path='路径',@fname='文件名',@sheetname='table表名' 创建存储过程p_exporttb: CREATE proc p_exporttb @sqlstr varchar(8000), --查询语句,如果查询语句中使用了order...
    执行存储过程:
    exec p_exporttb @sqlstr='sql语句',@path='路径',@fname='文件名',@sheetname='table表名'


    创建存储过程p_exporttb:
    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),@tmpsql varchar(8000)
    declare @sheetcount int,@sheetnow int, @recordcount int, @recordnow int
    declare @sheetsql varchar(8000)--创建页的sql


    declare @pagesize int
    set @pagesize = 65000--sheet分页的大小
    --set @pagesize = 1000


    --参数检测
    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())


    declare @tbtmpid nvarchar(50)
    set @tbtmpid ='tmp_'+convert(varchar(38),newid())+''




    --有序列ID @tbtmpid的临时表
    set @sql='select Identity(int,1,1) as ['+@tbtmpid+'], a.* into ['+@tbname+'] from ( select top 100 percent b.* from ( '+@sqlstr+') b) a'
    exec(@sql)


    --print(@sql)




    --取得记录总数
    set @recordcount= @@rowcount
    if @recordcount=0 return
    --print @recordcount


    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)
    and a.name <> @tbtmpid


    set @fdlist=substring(@fdlist,2,8000)
    --print @fdlist


    --列数为零
    if @@rowcount=0 return




    set @sheetsql = @sql


    --print @sheetsql




    --导入数据
    --页数
    set @sheetcount = CEILING(@recordcount/CAST(@pagesize as float))
    --print @sheetcount
    --只是一个页而已
    IF @sheetcount = 1 BEGIN
        --print '只是一个页而已'


        set @sql='create table ['+@sheetname
         +']('+substring(@sheetsql,2,8000)+')'
         
        
        exec @err=sp_oamethod @obj,'execute',@out out,@sql
        if @err<>0 goto lberr
        






        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+']')
    END


    --多个页


    set @sheetnow = @sheetcount
    set @recordnow= 0 
    IF @sheetcount > 1 BEGIN
        --print '多个页'
    WHILE @sheetnow > 0 BEGIN


        --创建页
        set @sql='create table ['+@sheetname+'_'+ convert(nvarchar(80),@sheetcount - @sheetnow + 1)
        +']('+substring(@sheetsql,2,8000)+')'
         
        
        exec @err=sp_oamethod @obj,'execute',@out out,@sql
        if @err<>0 goto lberr
        
        --print @sql
        --创建页end




        IF @sheetnow = @sheetcount BEGIN
            set @tmpsql ='select top '+str(@pagesize)+' '+@fdlist+' from ['+@tbname+']'
            set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES
        ;DATABASE='+@path+@fname+''',['+@sheetname+'_'+convert(nvarchar(80),@sheetcount - @sheetnow + 1)+'$])'
            
            exec('insert into '+@sql+'('+@fdlist+') '+ @tmpsql)
        END
        IF @sheetnow < @sheetcount BEGIN    
            set @tmpsql='select top '+str(@pagesize)+' '+@fdlist+' from ['+@tbname+'] where ['+@tbtmpid
        +'] not in ( select top '+str(@recordnow-@pagesize)+' ['+@tbtmpid+'] from ['+@tbname+'])'


            set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES
        ;DATABASE='+@path+@fname+''',['+@sheetname+'_'+ convert(nvarchar(80),@sheetcount - @sheetnow + 1)+'$])'
            
            exec('insert into '+@sql+'('+@fdlist+') '+ @tmpsql)
            --print (@tmpsql)    
            --exec(@tmpsql)
        END
        
        --print (@tmpsql)    


        --exec (@tmpsql)    


        set @recordnow = @pagesize*(@sheetcount-@sheetnow+2)
        set @sheetnow = @sheetnow -1
    END
    END


    set @sql='drop table ['+@tbname+']'
    exec(@sql)




    exec @err=sp_oadestroy @obj


    --结束返回
    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






    ---开启配置


    USE master;
    GO
    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ole Automation Procedures', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ad Hoc Distributed Queries', 1;
    GO
    RECONFIGURE;
    GO 


    RECONFIGURE;
    EXEC sp_configure;

    展开全文
  • 此程序使用java编写,采用swing编写界面,可以将任意sql查询语句的查询结果导入excel
  • 在平时工作中经常会遇到,sql 查询数据之后需要发送给业务人员,每次都手工执行脚本然后拷贝数据到excel中,比较耗时耗力,可以考虑自动执行查询并将结果邮件发送出来。 分两步实现: 1、执行查询结果保存为...

    在平时工作中经常会遇到,sql 查询数据之后需要发送给业务人员,每次都手工执行脚本然后拷贝数据到excel中,比较耗时耗力,可以考虑自动执行查询并将结果邮件发送出来。

    分两步实现:

    1、执行查询将结果保存为excel,这里使用存储过程

     1 Create procedure [dbo].[pr_Dept_Bak]
     2 
     3 as
     4 
     5 begin
     6 
     7 ---这里可以增加对数据表的查询条件或更多的数据处理;
     8 
     9 ---将结果放入一个新的数据表,然后将这个新表导出EXCEL文件;
    10 
    11 declare @file_path varchar(200);--导出EXCEl文件的路径;
    12 
    13 declare @file_name varchar(200);--导出EXCEl的文件名;
    14 
    15 declare @exec_sql  varchar(200);--SQL语句;
    16 
    17 ---分开定义是为了以后修改路径或文件名更方便。
    18 
    19 set @file_path = 'E:\Dept_Bak\'
    20 
    21 set @file_name = 'dept' + CONVERT(varchar(100), GETDATE(), 112)+'.xls'
    22 
    23 set @exec_sql = 'select * from book.dbo.users_dept'  ---数据表使用的完整路径;
    24 
    25 set @exec_sql = ' bcp "'+@exec_sql+'" queryout "'+@file_path+''+@file_name+'" -c -T -U "sa" -P "SQLpassword"';
    26 
    27 ----U "sa" -P "SQLpassword" 这是数据库的sa账号和密码;
    28 
    29 exec master..xp_cmdshell @exec_sql
    30 
    31 end
    View Code

     

    https://github.com/xiiiblue/report-man

    https://github.com/chenhuican/data_analysis

     

    http://www.cnblogs.com/jhxk/articles/4887003.html

    转载于:https://www.cnblogs.com/vitas/p/8127797.html

    展开全文
  • 首先,mysql查询结果,可以导出文件,不可以直接导出excel(虽然后缀名可以是xls)第二,导出文件的sql语句如下:select * into outfile '/var/lib/mysql-files/test.xls' from temp_stu_ans_count ORDER BY num ...

    首先,mysql查询结果,可以导出文件,不可以直接导出成excel(虽然后缀名可以是xls)

    第二,导出文件的sql语句如下:

    select * into outfile '/var/lib/mysql-files/test.xls'  from temp_stu_ans_count  ORDER BY num desc;

    sql其实就是

    select * into outfile '文件路径'  from 表名及查询条件;

    注意:

    有可能执行的时候会报错

    1.ERROR 1045 (28000): Access denied for user 'ispeak'@'%' (using password: YES) 这个错误代表你的用户没有文件读写的权限,可以去授权(操作系统给用户授权),或者换个有读写权限的用户

    2.ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement  这个模式下,只能往指定目录下写文件,具体能写到哪,可以通过sql查看,sql语句如下:

    show global variables like '%secure%';

    结果如下

    3f56bf10b2216fab71dc30dd0a7d2f73.png

    写到对应位置就可以了

    3.同样的sql执行第二次会报错  :ERROR 1086 (HY000): File '/var/lib/mysql-files/test.xls' already exists  换一个文件名,或者去磁盘上删除这个文件就可以了

    展开全文
  • SQL查询结果导出Excel

    千次阅读 2016-05-10 23:30:30
    --将结果导出到指定的数据库 SET @Sql = REPLACE(@QuerySql,' from ',' into '+@tmp+ ' from ' + @DataSource) PRINT @Sql EXEC(@Sql) DECLARE @Columns VARCHAR(max) = '',@Data NVARCHAR(max)='' SELECT...

    执行:

    /****** Object:  StoredProcedure [dbo].[ExportFile]    Script Date: 2016-05-10 23:21:13 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    sp_configure 'show advanced options',1
    reconfigure
    go
    sp_configure 'xp_cmdshell',1
    reconfigure
    go
    
    Create PROC [dbo].[ExportFile] 
         @QuerySql VARCHAR(max)
        ,@Server VARCHAR(20) 
        ,@User VARCHAR(20) = 'sa'
        ,@Password VARCHAR(20)
        ,@FilePath NVARCHAR(100) = 'd:\ExportFile.csv'
    AS
    
    DECLARE @tmp VARCHAR(50) = '[##Table' + CONVERT(VARCHAR(36),NEWID())+']'
    BEGIN TRY
        DECLARE @Sql VARCHAR(max),@DataSource VARCHAR(max)='';
        --判断是否为远程服务器
        IF @Server <> '.' AND @Server <> '127.0.0.1'
            SET @DataSource = 'OPENDATASOURCE(''SQLOLEDB'',''Data Source='+@Server+';User ID='+@User+';Password='+@Password+''').'
        --将结果集导出到指定的数据库
        SET @Sql = REPLACE(@QuerySql,' from ',' into '+@tmp+ ' from ' + @DataSource)
        PRINT @Sql
        EXEC(@Sql)
            
        DECLARE @Columns VARCHAR(max) = '',@Data NVARCHAR(max)=''
        SELECT @Columns = @Columns + ',''' + name +''''--获取列名(xp_cmdshell导出文件没有列名)
            ,@Data = @Data + ',Convert(Nvarchar,[' + name +'])'--将结果集所在的字段更新为nvarchar(避免在列名和数据union的时候类型冲突)
        FROM tempdb.sys.columns WHERE object_id = OBJECT_ID('tempdb..'+@tmp)
        SELECT @Data  = 'SELECT ' + SUBSTRING(@Data,2,LEN(@Data)) + ' FROM ' + @tmp
        SELECT @Columns =  'Select ' + SUBSTRING(@Columns,2,LEN(@Columns))
        --使用xp_cmdshell的bcp命令将数据导出
        EXEC sp_configure 'xp_cmdshell',1
        RECONFIGURE
        DECLARE @cmd NVARCHAR(4000) = 'bcp "' + @Columns+' Union All ' + @Data+'" queryout ' + @FilePath + ' -c' + CASE WHEN RIGHT(@FilePath,4) = '.csv' THEN ' -t,' ELSE '' END + ' -T'
        PRINT @cmd
        exec sys.xp_cmdshell @cmd
        EXEC sp_configure 'xp_cmdshell',0
        RECONFIGURE
        EXEC('DROP TABLE ' + @tmp)
    END TRY
    BEGIN CATCH
        --处理异常
        IF OBJECT_ID('tempdb..'+@tmp) IS NOT NULL
            EXEC('DROP TABLE ' + @tmp)
        EXEC sp_configure 'xp_cmdshell',0
        RECONFIGURE        
        SELECT ERROR_MESSAGE()
    END CATCH

    
    

    调用:

    EXEC dbo.ExportFile @QuerySql = 'select * from master.sys.objects', -- varchar(max)
        @Server = '127.0.0.1', -- varchar(20)
        @User = 'sa', -- varchar(20)
        @Password = 'sa', -- varchar(20)
        @FilePath = N'd:\ExportFile.csv' -- nvarchar(100)



    展开全文
  • 3.选择目标类型 excel,选择导出模板,下一步; 4.选择编写查询以指定要传输的数据(W),可以直接按W,下一步; 5.写入查询SQL语句,点击分析检测语句,下一步; 6.编辑映射关系,预览效果,下一步; 7.下一步...
  • 有时候在pl/sql里面查询出数据并导出,生成tmp001.xls,但因为没有另存为其他文档,又找不到tmp001.xls的目录,...ps/sql查询结果导出excel的目录为: C:\Documents and Settings\Administrator\Local Settings\...
  • asp查询结果导出excel

    2013-08-28 15:10:56
    asp连接sql2008全部查询导出excel 包里有数据库代码,项目直接放到iis上可用
  • sql查询结果导出Excel

    千次阅读 2009-10-29 17:05:00
    T-SQL代码:EXEC master..xp_cmdshell bcp 库名.dbo.表名out c:/Temp.xls -c -q -S"servername" -U"sa" -P""参数:S 是SQL服务器名;U是用户;P是密码说明:还可以导出文本文件等多种格式declare @str varchar(600)...
  • 从事数据工作者经常会涉及数据采集,将采集...1.首先在数据库中,这里在数据库中查询结果 2.导出到本地打开发现是这样的3.解决办法 将你导出的这个文件(20171010-180716.csv),以记事本方式打开,然后另存为2017101
  • private SQLHelper sqlhelper; public 要利用datagridview实现导出Excel() { InitializeComponent(); sqlhelper = new SQLHelper(); } public DataTa
  • 不像Mysql , SQL Server似乎没有指定的语句可以直接把SQL查询语句的结果导出到文件 下面用Python的pandas库实现这一功能 1 import pandas as pd 2 import pymssql 3 conn = pymssql.connect('192.168.xxx....
  • 在调用sql之后的查询结果,导入到桌面。要加入poi三个夹包,自己百度下。很容易找到
  • 首先,mysql查询结果,可以导出文件,不可以直接导出excel(虽然后缀名可以是xls) 第二,导出文件的sql语句如下: select * into outfile '/var/lib/mysql-files/test.xls' from temp_stu_ans_count ORDER BY ...
  • use gs_gw630declare @sql varchar(8000)declare @sql1 varchar(8000)declare @sql2 varchar(8000)declare @DateBigin intdeclare @DateEnd intdeclare @pageCode intdeclare @AddrID varchar(1000)declare @tableNa
  • SQL=test.sql $MYSQL -u$DB_USER -p$DB_PASSWD -h$DB_HOST $DB < $SQL > $XLS1 #转换为UTF-8编码,不然附件内容会乱码 iconv -futf8 -tgb2312 -o$XLS2 $XLS1 echo $MSG | mail -s "${DATE}" ...
  • (MEMO:利用spool缓冲池技术) 具体步骤如下: ...2、在命令中输入相应的SQL查询命令 select * from customer; ... 3、在命令行中输入缓冲结果命令 spool off; 系统将缓冲池的结果
  • 由于现在要写一个算法,是一个存储过程,功能是将一个表的数据分批导出到EXCEL中: 比如: ...简单的说就是将查询结果导出EXCEL ,文件名可以自定义,希望各位高手帮帮小弟,感激不尽。。。
  • 相信大家常常会遇到将SqlServer查询结果导出Excel的问题。如果导出的次数少,直接“Save Results As...”就是了;但是当要分别在每个表取样,那就相当麻烦了。今天就为大家提供一个脱离office组件的可以将语句结果...
  • 相信大家常常会遇到将SqlServer查询结果导出Excel的问题。如果导出的次数少,直接“Save Results As...”就是了; 1.1准备好查询语句 1.2选择数据库,启动导入和导出向导 1.3选择数据源 1.4...
  • 相信大家常常会遇到将SqlServer查询结果导出Excel的问题。如果导出的次数少,直接“Save Results As...”就是了;但是当要分别在每个表取样,那就相当麻烦了。今天就为大家提供一个脱离office组件的可以将语句结果...
  • SQL SERVER 与ACCESS、EXCEL的数据转换熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用...
  • 有时候我们需要在Windchill数据库中做一些查询,SQL Developer就是个很方便的工具,但我发现很多人却不知道如何将查询结果导出,而只能采用截图等方式,要是返回的行非常多的话,截图一次是没法把全部结果都截取到的...
  • 数据库服务器是:SQL2000 已经有一个sql查询文件,在mssql management studio里可能根据这个sql文件查询结果,但每次都得手动操作 ...请问有没办法用命令行的方式,根据这个sql查询文件导出结果到excel文件中。 谢谢
  • 导出excel的时候出错 错误0xc002f210:准备SQL任务1:执行查询“CREATE TABLE`Description`( `P / N`长文本, `德......“失败,出现以下错误:”Microsoft Office Access数据库引擎找不到对象“描述”。请确保该...
  • SQL查询结果导出XML文件简单的方法

    千次阅读 2012-11-22 10:54:05
    最近需要把数据导成XML,不想通过编程实现,手工...本来以为可以把查询结果通过bcp导出文本的形式,但经过N次试验,导出的XML不知道为什么都会自动换行,一打开就会报错,百思不得其解,而且导出的XML没有一个,这也是
  • INTO OUTFILE '/Users/mac/Downloads/catid.csv' 1.2,导出Excel格式;INTO OUTFILE '/Users/mac/Downloads/catid.xls' 1.3,注意事项; 目录需要根据自己情况设定,不能用~代替; 所以此时需要确定用户名对应输入...
  • 一、导出数据外部1)mysql连接+将查询结果输出到文件。在命令行中执行(windows的cmd命令行,mac的终端)mysql -hxx -uxx -pxx -e "query statement" db > file-h:后面跟的是链接的host(主机)-u:后面跟的是用户名-p...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 377
精华内容 150
关键字:

sql查询结果导出excel