暂无图片
命令放到bcp之后不能正常执行? 有没有哪位大神熟悉BCP命令的使用,语句放到bcp里之前,是可以正常执行的.
我来答
分享
QIU飞
2021-07-30
命令放到bcp之后不能正常执行? 有没有哪位大神熟悉BCP命令的使用,语句放到bcp里之前,是可以正常执行的.
暂无图片 5M

命令放到bcp之后不能正常执行?
有没有哪位大神熟悉BCP命令的使用,语句放到bcp里之前,是可以正常执行的.
2.png

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
冯守东

请检查一下字符编码格式

暂无图片 评论
暂无图片 有用 0
lscomeon
-- =============================================
-- Author:        <Viajar>
-- Create date: <2010/06/01>
-- Description:    <生成bcp导出的字符串>
-- Remark: 
-- 适用于:连续、有规律表名的bcp命令
-- 表名 = 表名前缀 + 起始表后缀 进行分离
-- 路径 = 路径前缀 + 起始表后缀 进行分离
-- =============================================
DECLARE @tableNamePrefix VARCHAR(50);--表名前缀:temp_gb2.dbo.gbRawActivatePDPContextReq_04
DECLARE @savePathPrefix VARCHAR(50);--路径前缀:I:\gbForKevin\gbRawActivatePDPContextReq_04
DECLARE    @start int;--起始表后缀:01
DECLARE @end int;--截至表后缀:20
DECLARE @dataBase VARCHAR(50);--数据库实例:BW-DATA\BOTWAVE
DECLARE @user VARCHAR(50);--数据库用户登陆名:sa
DECLARE @password VARCHAR(50);--密码:password
DECLARE @splitString VARCHAR(50);--csv文件的分隔符:|

--设置变量
SET @tableNamePrefix ='temp_gb2.dbo.gbRawActivatePDPContextReq_04'
SET @savePathPrefix ='I:\gbForKevin\gbRawActivatePDPContextReq_04'
SET @start = 01
SET @end = 20
SET @dataBase ='BW-DATA\BOTWAVE'
SET @user ='sa'
SET @password ='password'
SET @splitString ='|'

BEGIN
    DECLARE @i INT;--用于循环的计数器.
    DECLARE @iString VARCHAR(5);--@i的字符串变量.
    DECLARE @sql VARCHAR(max);--保存生成的SQL.
    SET @i = @start

    WHILE(@i<=@end)
    BEGIN
        SET @iString = CONVERT(varchar(5), @i)
        IF(len(@iString)=1) 
        BEGIN
            SET @iString = '0' + @iString
        END
        SET @sql = 'EXEC master..xp_cmdshell ''bcp "SELECT * FROM ';
        SET @sql = @sql + @tableNamePrefix + @iString;--@tableNamep
        SET @sql = @sql + '" queryout '+ @savePathPrefix + @iString + '.csv ';--@savePath
        SET @sql = @sql + '-S '+ @dataBase + ' -U"'+@user+'" -P"'+@password+'" ';--@dataBase
        SET @sql = @sql + '-c -t"'+ @splitString + '" -r"\n" -k -b10000 -a65535''';--other parameter
        PRINT '--' + @tableNamePrefix + @iString
        PRINT @sql
        PRINT 'GO'
        PRINT char(13)--换行符.
        SET @i = @i +1
    END
END

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏