我创建了一个 sp 来将我存储在表中的脚本导出到文本文件。这个 sp 做的是,如果我给 100 作为计数,那么每个文件将有 100 个来自表的脚本。我将文件名保存为 objects_1、objects_2 等等。但我需要的是。如果我有 100 个文件。那么第一个文件应该命名为 objects_001 ,objects_002 ,最后一个文件应该是 objects_100 。有人可以提出一个想法来做到这一点。,并且请确认这个sp逻辑是正确的。谢谢。
alter PROCEDURE USP_GenerateFile_Packets_new(@count int)
AS
BEGIN
DECLARE @ExportQry NVARCHAR(500)
DECLARE @sql NVARCHAR(500)
DECLARE @ExportPath NVARCHAR(100)
SET @ExportPath='C:\Upgrade\Scripts\'
DECLARE @BCPFileName NVARCHAR(50)
DECLARE @ReturnValue NVARCHAR(50)
DECLARE @K INT=1
declare @minval int=(select min(id) from vsl.ScriptTable)
--DECLARE @I INT=(SELECT COUNT(*) from [UpgradeDB].vsl.ScriptTable)
declare @count1 int=(select @count-1)
WHILE @minval <= (SELECT max(id) from [UpgradeDB].vsl.ScriptTable)
BEGIN
SET @ExportQry = 'SELECT TOP '+convert(nvarchar(100),@count)+' script FROM [UpgradeDB].vsl.ScriptTable where id>='+convert(nvarchar(100),@minval)+' and id<='+convert(nvarchar(100),@minval)+'+'+convert(nvarchar(100),@count1)+' order by id'
SET @sql = 'bcp "' + @ExportQry + ' " queryout ' + @ExportPath + 'OBJECTS_'+convert(nvarchar(100),@k)+'.txt -c -t^| -T -S ' + @@SERVERNAME;
--select @sql
EXEC @ReturnValue = master..xp_cmdshell @sql
SET @minval=@minval+@COUNT
set @k=@k+1
END
END
--USP_GenerateFile_Packets_new 1500