SSIS 学习之旅 FTP文件传输-脚本任务
这一章主要讲解一下用脚本怎么把CSV文件抛送到FTP服务器上
设计:
通过Demon库的Users表数据生成CSV文件。
生成后的CSV文件抛送到FTP指定目录下。
控件的使用这里就不做详细讲解了。大家如果有不懂得可以看下我之前的文章。
第一章:SSIS 学习之旅 第一个SSIS 示例(一)(上)
第三章:SSIS 学习之旅 数据同步
创建语句:
-- 创建一个数据库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必须要有相应的路径 否则会找不到路径的哟。
Mr_Damon