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

----------------------------------------------------------------------------------

-- 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'

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值