SSIS 学习之旅 FTP文件传输-脚本任务

这一章主要讲解一下用脚本怎么把CSV文件抛送到FTP服务器上

设计:
   通过Demon库的Users表数据生成CSV文件。
   生成后的CSV文件抛送到FTP指定目录下。

控件的使用这里就不做详细讲解了。大家如果有不懂得可以看下我之前的文章。

第一章:SSIS 学习之旅 第一个SSIS 示例(一)(上)

第二章:SSIS 学习之旅 第一个SSIS 示例(二)

第三章:SSIS 学习之旅 数据同步

第四章:SSIS 学习之旅 FTP文件传输-FTP任务

 

创建语句:

-- 创建一个数据库Demo
CREATE DATABASE  Demon

-- 创建一张User表
CREATE TABLE [dbo].[Users](
    [ID] BIGINT IDENTITY(1,1) NOT NULL,
    [UserName] NVARCHAR(500) NULL,
    [PassWords] NVARCHAR(500) NULL
) ON [PRIMARY]

-- 给表添加数据
INSERT INTO [dbo].[Users]
VALUES ('LiLei','123456')
INSERT INTO [dbo].[Users]
VALUES ('Wangmingmign','654321')
INSERT INTO [dbo].[Users]
VALUES ('Jack','123654')
创建语句

 

1.创建脚本任务
通过脚本任务来生成文件名称及完整路径信息

 

2.创建本地目录
通过文件系统任务在本地生成存放CSV文件路径

 

3.创建数据流任务
通过数据流任务来生成CSV文件

 

4.创建平面文件连接管理器

记得给csv文件路径及名称

 

5.创建脚本任务

 

辅助方法:

        /// <summary>
        /// 上传
        /// </summary>
        /// <param name="FilePathPendingAndName">文件详细路径</param>
        /// <param name="FTPUrl">FTPUrl</param>
        /// <param name="FTP_UserName">用户名</param>
        /// <param name="FTP_PWD">密码</param>
        public void Upload(string FilePathPendingAndName, string FTPUrl, string FTP_UserName, string FTP_PWD)
        {
            FileInfo fileInf = new FileInfo(FilePathPendingAndName);
            FtpWebRequest reqFTP;
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(FTPUrl + fileInf.Name));
            reqFTP.Credentials = new NetworkCredential(FTP_UserName, FTP_PWD);
            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
            reqFTP.KeepAlive = false;
            reqFTP.UseBinary = true;
            reqFTP.ContentLength = fileInf.Length;
            int buffLength = 2048;
            byte[] buff = new byte[buffLength];
            int contentLen;
            FileStream fs = fileInf.OpenRead();
            try
            {
                Stream strm = reqFTP.GetRequestStream();
                contentLen = fs.Read(buff, 0, buffLength);
                while (contentLen != 0)
                {
                    strm.Write(buff, 0, contentLen);
                    contentLen = fs.Read(buff, 0, buffLength);
                }
                strm.Close();
                fs.Close();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }




        #region 连接FTP服务器
        /// <summary>  
        /// 连接FTP服务器
        /// </summary>  
        /// <param name="FtpServerIP">FTP连接地址</param>  
        /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>  
        public string FTPHelper(string FtpServerIP, string FtpRemotePath)
        {
            string ftpURI = "ftp://" + FtpServerIP + "/" + FtpRemotePath + "/";
            return ftpURI;
        }

        #endregion

 

6.运行项目
到FTP可以查询 抛送的文件信息
注意:FTP必须要有相应的路径  否则会找不到路径的哟。

 

posted @ 2016-05-11 15:09  Mr_Damon  阅读(834)  评论(0编辑  收藏  举报