SQL查詢結果匯出到Excel中

2021-07-11 17:48:55 字數 2506 閱讀 2424

執行:

/****** object:  storedprocedure [dbo].[exportfile]    script date: 2016-05-10 23:21:13 ******/

set ansi_nulls on

goset quoted_identifier on

gosp_configure 'show advanced options',1

reconfigure

gosp_configure 'xp_cmdshell',1

reconfigure

gocreate proc [dbo].[exportfile]

@querysql varchar(max)

,@server varchar(20)

,@user varchar(20) = 'sa'

,@password varchar(20)

,@filepath nvarchar(100) = 'd:\exportfile.csv'

asdeclare @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)

MySQL查詢結果匯出到Excel

mysql uroot p use databa xx select user,host,password from user into outfile tmp data.xls select b.name,a.title,a.answer from plugin faq question a jo...

sql查詢結果集匯出Excel

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 s...

mysql查詢結果匯出到檔案

方法一 直接執行命令 mysql select count 1 fromtable into outfile tmp test.xls query ok,31 rows affected 0.00 sec 在目錄 tmp 下會產生檔案test.xls 遇到的問題 mysql select count...