if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[writeInfo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[writeInfo]
GOCREATE PROCEDURE [dbo].[writeInfo]
@info varchar(8000),--要写入的信息的内容
@fName varchar(8000),--要写入信息的文件的文件名。
@Append int=0--,是否追加到现有文件。0,创建新的文件,其他,追加到现有文件。
as
begin
declare @tmpFile varchar(8000)--临时文件
declare @cmd varchar(8000)--命令
set @tmpFile=cast(cast(rand()*9999999999 as bigint)+1000000000 as varchar)+'.tmp'---产生一个临时文件。
if @Append=0
begin--创建新的文件。
set @cmd='echo '+@info+'>'+@fName
exec master..xp_cmdshell @cmd
end
else
begin
set @cmd='echo '+@info+'>'+@tmpFile
exec master..xp_cmdshell @cmd
set @cmd='copy '+@fName+'+'+@tmpFile+' '+@fName+' /b'
exec master..xp_cmdshell @cmd
set @cmd='del '+@tmpFile
exec master..xp_cmdshell @cmd
end
end 放一个写文件的存储过程
drop procedure [dbo].[writeInfo]
GOCREATE PROCEDURE [dbo].[writeInfo]
@info varchar(8000),--要写入的信息的内容
@fName varchar(8000),--要写入信息的文件的文件名。
@Append int=0--,是否追加到现有文件。0,创建新的文件,其他,追加到现有文件。
as
begin
declare @tmpFile varchar(8000)--临时文件
declare @cmd varchar(8000)--命令
set @tmpFile=cast(cast(rand()*9999999999 as bigint)+1000000000 as varchar)+'.tmp'---产生一个临时文件。
if @Append=0
begin--创建新的文件。
set @cmd='echo '+@info+'>'+@fName
exec master..xp_cmdshell @cmd
end
else
begin
set @cmd='echo '+@info+'>'+@tmpFile
exec master..xp_cmdshell @cmd
set @cmd='copy '+@fName+'+'+@tmpFile+' '+@fName+' /b'
exec master..xp_cmdshell @cmd
set @cmd='del '+@tmpFile
exec master..xp_cmdshell @cmd
end
end 放一个写文件的存储过程
@info varchar(8000),--要写入的信息的内容
@fName varchar(8000),--要写入信息的文件的文件名。
@Append int=0--,是否追加到现有文件。0,创建新的文件,其他,追加到现有文件。 不清楚哦,@fName写成 *.txt的话,出来的是ansi编码的帮你顶吧
但是如何来写成utf-8的还需要研究。DECLARE @object int
DECLARE @hr int
DECLARE @src varchar(255)
Declare @desc varchar(255)
Declare @tmp int
declare @msg varchar(3000)
declare @strPath nvarchar(512)SET @msg='Hello. MS SQL Server 2000. I Love you!!!' --這字串將會被寫到SQL Server的安裝目錄下的Nipsan.Txt文件里面
Set @strPath='D:\Nipsan.Txt' --組成文件全路径
--創建Scripting組件實例
EXEC @hr = sp_OACreate 'Scripting.FileSystemObject',@object OUT
IF @hr<>0
BEGIN
EXEC sp_OAGetErrorInfo @object,@src OUT,@desc OUT
SELECT hr=convert(varbinary(4),@hr),Source=@src,Description=@desc
RETURN
END
--創建文件
EXEC @hr = sp_OAMethod @object,'CreateTextFile',@tmp OUTPUT,@strPath
IF @hr<>0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
--把@msg寫到文件里面去
EXEC @hr = sp_OAMethod @tmp,'Write',NULL,@msg
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
--關閉文件
EXEC @hr = sp_OAMethod @tmp, 'Close',NULL
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
-----------寫文件操作Demo完成--------------------------------------------------------------- --打開文件
EXEC @hr = sp_OAMethod @object, 'OpenTextFile', @tmp OUTPUT ,@strPath
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END SET @msg=''
--讀文件
EXEC @hr = sp_OAMethod @tmp, 'Read', @msg OUT,3000
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
-----讀文件操作Demo完成
SELECT @msg AS RESULT
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名 out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.txt -c -w -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.txt -c -w -Sservername -Usa -Ppassword'后面加个参数 -w,表示使用unicode字符。