您的位置:首页 > 数据库

批量将数据库中的用户表导出到指定目录下的txt文件

2010-06-26 11:59 369 查看
----------------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-06-26 11:55:48
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-- Blog : http://blog.csdn.net/htl258 -- Subject: 批量将数据库中的用户表导出到指定目录下的txt文件
----------------------------------------------------------------------------------
IF OBJECT_ID('p_TbToTxt') > 0
DROP PROC p_TbToTxt
GO
CREATE PROC p_TbToTxt
@dbname SYSNAME,--库名
@path NVARCHAR(100) --导出路径
AS
SET NOCOUNT ON
--格式化路径
DECLARE @s VARCHAR(8000)
IF RIGHT(@path,1)<>'/' SET @path=@path+'/'
SET @path=REPLACE(@path,':',':')
--判断输入的盘符是否正确,不正确退出
DECLARE @t TABLE(a INT,b INT,c INT)
INSERT @t EXEC master..xp_fileexist @path
IF NOT EXISTS(SELECT 1 FROM @t WHERE c=1)
BEGIN
RAISERROR('输入的盘符不存在,请重新输入!',16,16)
RETURN
END
--判断是否存在输入路径,不存在创建
IF NOT EXISTS(SELECT 1 FROM @t WHERE b=1)
BEGIN
SET @s='md '+@path
EXEC master..xp_cmdshell @s,NO_OUTPUT
END
SET @s=NULL
--创建游标循环导出用户表
DECLARE c CURSOR FOR
SELECT 'EXEC master..xp_cmdshell ''BCP ['+@dbname+']..'+name+' OUT '+@path+name+'.txt -c -T'',NO_OUTPUT'
FROM sysobjects
WHERE TYPE='u'
OPEN c
FETCH c INTO @s
WHILE @@FETCH_STATUS=0
BEGIN
EXEC(@s)
FETCH c INTO @s
END
CLOSE c
DEALLOCATE c
SET NOCOUNT OFF
GO
--调用示例:
EXEC p_TbToTxt 'Mydb','D:/Txt'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐