執行:
/****** 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...