zoukankan      html  css  js  c++  java
  • usp_Copy_Unzip_DirFiles -- 拷贝,解压,列出文件名 from FTP Folder to Work Folder

    CREATE PROC usp_Copy_Unzip_DirFiles 
    @FTPPath NVARCHAR(4000)= '',    -- ftp 文件夹路径
    @WorkPath NVARCHAR(4000) = '',  -- work 文件夹路径
    @FileName NVARCHAR(4000) = '',  -- 文件名
    @sqlCmd NVARCHAR(4000) = '', -- 要执行的 cmd 命令
    @RegRule nvarchar(4000) = 'Regex*.zip', -- 定义要拷贝的文件名的规则
    @7zipPath NVARCHAR(4000) = 'IPCC$"Program Files"7-Zip7z.exe',  -- 原理即调用 7z 解压软件解压,所以  IPC 对应到相应的网络磁盘路径
    @IsZipped BIT = 1   -- 输入参数,确认拷贝的 是不是 压缩文件,只有压缩文件,下面的脚本解压部分才需要执行
    AS
    SET @sqlCmd = 'dir /b '+@FTPPath+@RegRule
    IF OBJECT_ID('tempdb..#dirlisttab') IS NOT NULL 
    DROP TABLE tempdb..#dirlisttab
    CREATE TABLE tempdb..#dirlisttab
    (
    FILENAME Nvarchar(128)
    )
    
    
    INSERT INTO #dirlisttab
    EXEC xp_cmdshell @sqlCmd
    --SELECT * FROM #dirlisttab
    
    DECLARE file_cur CURSOR LOCAL STATIC FORWARD_ONLY FOR 
    SELECT [FILENAME] FROM #dirlisttab
    OPEN file_cur
    WHILE 1=1 
    BEGIN 
    fetch next from file_cur into @FileName
    SET @sqlCmd = 'copy '+@FTPPath+@FileName+' '+@WorkPath+@FileName
    print @sqlcmd
    EXEC xp_cmdshell @sqlcmd
    
    IF(@IsZipped = 1)
    BEGIN
    SET @sqlCmd = @7zipPath+' x '+@WorkPath+@FileName+' -y -aos -o'+@WorkPath
    print @sqlcmd
    EXEC xp_cmdshell @sqlcmd
    END
    
    if @@fetch_status <> 0 break;
    END 
    CLOSE file_cur
    DEALLOCATE file_cur
    SET @sqlCmd = ' dir /b '+@WorkPath+'*.txt > '+@WorkPath+'FileName|del '+@WorkPath+'*.zip /Q'
    print @sqlcmd
    EXEC xp_cmdshell @sqlcmd
    DROP TABLE tempdb..#dirlisttab
    GO
    

      

    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    Java静态方法中使用注入类
    Java FTP辅助类
    Java SFTP辅助类
    MyBatis学习总结——批量查询
    MyBatis学习总结—实现关联表查询
    Redis集群搭建与简单使用
    SQL管理工具
    MySQL锁机制
    MySQL权限管理
    yii框架下使用redis
  • 原文地址:https://www.cnblogs.com/Frank99/p/5490888.html
Copyright © 2011-2022 走看看