0

下面是我将带有 SQL 的文件推送到另一台服务器的代码。

 EXEC [ftpPushRegisteredSSIS] '12345', '54321', 'C:\TCC\Manufacturer Integration\100_110 – DiaryBelle','Daily_Dairybelle.txt', '111.111.111.11', 1, 1

 CREATE PROCEDURE [dbo].[FtpPushRegisterSSIS]
    @User VARCHAR(50),
    @Password VARCHAR(50),
    @sourceDir VARCHAR(250),
    @SourceFiles VARCHAR(50),
    @DestinationFTPServer VARCHAR(50),
    @DestinationFTPPath VARCHAR(250),
    @Overwrite BIT,
    @isASCII BIT

AS
BEGIN
    DECLARE @overwriteTF VARCHAR(5)
    DECLARE @isASCIITF VARCHAR(5)

    SET @overwriteTF = 'true'
    SET @isASCIITF = 'true'

    IF @Overwrite = 0
    BEGIN
        SET @overwriteTF = 'false'
    END

    IF @isASCII = 0
    BEGIN
        SET @isASCIITF = 'false'
    END

--  DECLARE @FtpPackage VARCHAR(150)
--  SET @FtpPackage = 'E:\ftpProcTesting\ftpPush.dtsx'
    DECLARE @cmd VARCHAR(1000)
    DECLARE @params VARCHAR(MAX)
    SET @params =   ' /set \package.variables[ftpUser].Value;"' +           @User + '"'+
                    ' /set \package.variables[ftpServer].Value;"' +         @DestinationFTPServer + '"'+
                    ' /set \package.Variables[sourceDir].Value;"' +         @sourceDir + '"' +
                    ' /set \package.variables[sourceFiles].Value;"' +       @SourceFiles + '"'+
                    ' /set \package.variables[destiPath].Value;"/' +        @DestinationFTPPath + '"' +
                    ' /set \package.variables[ftpPass].Value;"' +           @Password + '"' +
                    ' /set \package.variables[overwrite].Value;"' +         @overwriteTF + '"' +
                    ' /set \package.variables[isASCII].Value;"' +           @isASCIITF + '"'


    -- FOR Filesystem package SET @cmd = 'dtexec /f "'+@FtpPackage+'" /Rep N' --set N to V for verbose logging
    SET @cmd = 'dtexec /sq ' + 'ftpPush' + ' /ser DBNAME '
    SET @cmd = @cmd + @params

    CREATE TABLE #output ([output] VARCHAR(500))
    INSERT INTO #output
    EXEC master.dbo.xp_cmdshell @cmd -- ,NO_OUTPUT

    IF  (
            SELECT COUNT(*)
            FROM #output
            WHERE [output] LIKE '%fail%'
            OR [output] LIKE '%error%'
            OR [output] LIKE '%not valid%'
        ) > 0
    BEGIN
        SELECT * FROM #output
        RAISERROR('***|||FTP Operation FAILED|||***',15,1)
    END

    SELECT * FROM #output

END

GO

当文件Dairybelle.txt到达服务器时,我希望它在文件名前面包含 getDate()。

像这样的东西:2012-08-01_Dairybelle.txt

我可以对我的代码进行哪些更改来执行此操作?

我不想更改当前位置的文件名,我只想在发送时更改它。因此,该名称仍将始终Dairybelle.txt在我的服务器上,但是当它到达它们时,它将具有重命名的文件。

我知道我可以编写代码来更改文件名,然后在发送后将其更改回来,但我确定有更简单的方法吗?

4

1 回答 1

0

我最终使用了 SSIS,它更容易!

请参阅此处的链接!

于 2012-09-18T12:19:29.257 回答