在FTP push |上重命名文件SQL

时间:2012-08-21 12:07:05

标签: sql-server tsql ftp

下面是我将带有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,但当它到达时,它将具有重命名的文件。

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

1 个答案:

答案 0 :(得分:0)

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

See the link here!