sql写文件 设定文件格式 utf-8 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