首页 > 解决方案 > 使用 BCP 实用程序创建动态文件

问题描述

在删除记录之前,我正在使用 BCP 实用程序将记录从表中复制出来。该功能工作得很好,但是,每次删除时我都需要将记录复制到一个新文件中,而不是覆盖同一个文件(就像现在一样)。它可能正在创建一个以时间戳为前缀的新文件或类似的东西。有任何想法吗?我的代码

Declare @cmd varchar(1000) = 'bcp "select * from ##DeletedRecords" queryout 
"C:\Delete\DeletedRecord.txt" -t, -c -T'
print @cmd
EXEC master..XP_CMDSHELL @cmd  

标签: sql-serverstored-proceduresbcpflat-file

解决方案


只需通过将日期和时间附加到文件名来相应地更改 BCP 命令中的文件名

例子 :

Declare @cmd varchar(1000);

select @cmd = 'bcp "select * from ##DeletedRecords" queryout '
            + '"C:\Delete\DeletedRecord' 
            + convert(varchar(10), getdate(), 112)    -- YYYYMMDD
            + replace(convert(varchar(10), getdate(), 108), ':', '') -- HHMMSS
            + '.txt" -t, -c -T'

print @cmd

EXEC master..XP_CMDSHELL @cmd  

推荐阅读