https://blog.csdn.net/u013054786/article/details/51408142


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

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

第一章:SSIS 学习之旅 第一个SSIS 示例(一)
第二章:SSIS 学习之旅 第一个SSIS 示例(二)
第三章:SSIS 学习之旅 数据同步
第四章:SSIS 学习之旅 FTP文件传输-FTP任务

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


创建语句:


[sql] view plain copy

  1. -- 创建一个数据库Demo  

  2. CREATE DATABASE  Demon  

  3.   

  4. -- 创建一张User表  

  5. CREATE TABLE [dbo].[Users](  

  6.     [ID] BIGINT IDENTITY(1,1) NOT NULL,  

  7.     [UserName] NVARCHAR(500) NULL,  

  8.     [PassWords] NVARCHAR(500) NULL  

  9. ON [PRIMARY]  

  10.   

  11. -- 给表添加数据  

  12. INSERT INTO [dbo].[Users]  

  13. VALUES ('LiLei','123456')  

  14. INSERT INTO [dbo].[Users]  

  15. VALUES ('Wangmingmign','654321')  

  16. INSERT INTO [dbo].[Users]  

  17. VALUES ('Jack','123654')  


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





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



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



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


记得给csv文件路径及名称



5.创建脚本任务



辅助方法:


[csharp] view plain copy

  1. /// <summary>  

  2.        /// 上传  

  3.        /// </summary>  

  4.        /// <param name="FilePathPendingAndName">文件详细路径</param>  

  5.        /// <param name="FTPUrl">FTPUrl</param>  

  6.        /// <param name="FTP_UserName">用户名</param>  

  7.        /// <param name="FTP_PWD">密码</param>  

  8.        public void Upload(string FilePathPendingAndName, string FTPUrl, string FTP_UserName, string FTP_PWD)  

  9.        {  

  10.            FileInfo fileInf = new FileInfo(FilePathPendingAndName);  

  11.            FtpWebRequest reqFTP;  

  12.            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(FTPUrl + fileInf.Name));  

  13.            reqFTP.Credentials = new NetworkCredential(FTP_UserName, FTP_PWD);  

  14.            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;  

  15.            reqFTP.KeepAlive = false;  

  16.            reqFTP.UseBinary = true;  

  17.            reqFTP.ContentLength = fileInf.Length;  

  18.            int buffLength = 2048;  

  19.            byte[] buff = new byte[buffLength];  

  20.            int contentLen;  

  21.            FileStream fs = fileInf.OpenRead();  

  22.            try  

  23.            {  

  24.                Stream strm = reqFTP.GetRequestStream();  

  25.                contentLen = fs.Read(buff, 0, buffLength);  

  26.                while (contentLen != 0)  

  27.                {  

  28.                    strm.Write(buff, 0, contentLen);  

  29.                    contentLen = fs.Read(buff, 0, buffLength);  

  30.                }  

  31.                strm.Close();  

  32.                fs.Close();  

  33.            }  

  34.            catch (Exception ex)  

  35.            {  

  36.                throw new Exception(ex.Message);  

  37.            }  

  38.        }  

  39.  

  40.  

  41.  

  42.  

  43.        #region 连接FTP服务器  

  44.        /// <summary>    

  45.        /// 连接FTP服务器  

  46.        /// </summary>    

  47.        /// <param name="FtpServerIP">FTP连接地址</param>    

  48.        /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>    

  49.        public string FTPHelper(string FtpServerIP, string FtpRemotePath)  

  50.        {  

  51.            string ftpURI = "ftp://" + FtpServerIP + "/" + FtpRemotePath + "/";  

  52.            return ftpURI;  

  53.        }  

  54.  

  55.        #endregion  


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