sql写文件 设定文件格式 utf8 unicode

--方法一

declare @objecttoken int
 exec sp_oacreate 'adodb.stream', @objecttoken output
 exec sp_oasetproperty @objecttoken, 'type', 2
 exec sp_oasetproperty @objecttoken, 'charset','utf-8'
 exec sp_oamethod @objecttoken, 'open'

 --写入数据
 declare syskursor insensitive scroll cursor for
  select txt from @file_temp order by id 
 open syskursor
 fetch syskursor into @strcmd
 while @@fetch_status = 0
 begin
  --execute @ole = sp_oamethod @file, 'writeline', null, @strcmd  
  exec sp_oasetproperty @objecttoken, 'writetext',@strcmd  
 fetch syskursor into @strcmd
 end
 close syskursor
 deallocate syskursor

 exec sp_oamethod @objecttoken, 'savetofile', null, @fileName, 2
 exec sp_oamethod @objecttoken, 'close'
 exec sp_oadestroy @objecttoken

--方法二:
alter   procedure [dbo].[usp_create_txtfile](@filename varchar(200))
as
begin
 declare @strcmd varchar(2048),
  @fs int,
  @ole int,
  @file int

 --删除存在的文件
 select @strcmd = 'del '+ @filename
 execute @ole = sp_oacreate 'scripting.filesystemobject', @fs out
 exec master..xp_cmdshell @strcmd, no_output
 
 --创建文件
 execute @ole = sp_oamethod @fs, 'opentextfile', @file out, @filename, 8, 1
 --写入数据
 declare syskursor insensitive scroll cursor
  for select export_col from export_download order by no

 open syskursor
 fetch syskursor into @strcmd
 while @@fetch_status = 0
 begin
  execute @ole = sp_oamethod @file, 'writeline', null, @strcmd
 fetch syskursor into @strcmd
 end
 close syskursor
 deallocate syskursor
 --关闭文件
 execute @ole = sp_oadestroy @file
 execute @ole = sp_oadestroy @fs
end

原文地址:https://www.cnblogs.com/kuailewangzi1212/p/1814440.html