首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> C# >> 正文

C#中使用DTS来导入数据及相关问题

  向Sql 中导入Excel数据时,使用MS SQL的DTS功能
  可以很方便的导入,同时引用Dll文件,可以在程序中对导入过程进行控制。
  
  创建DTS包的过程如下:
  1。在SQL企业管理器中,工具菜单选数据转换服务,导入数据
  按照它的图形化向导提示,可以一步步创建一个DTS包,可以选择保存在数据库。
  2。在SQL企业管理器中,左边树形结构中选择 数据转化服务,本地包中
  可以新建一个包,同样有图形化的界面建立包:拖一个Excel数据源,拖一个Sql数据源
  然后在任务里选 数据转化任务,原数据选Excel源,目的选SQL,然后在转化的肩头上选属性
  里面可以配置转化过程。注意带有主键的数据表,要把选项中 启用标示插入去掉
  
  
  在C#里调用过程如下:
  private void RunDTS()
  2 {
  3 DTS.Package2Class package = new Package2Class();
  4 object p = null;
  5 package.LoadFromSQLServer("ws-victor-03", null, null, DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection,
  6 null, null, null, "TestDTS", ref p);
  7 package.Connections.Item(1).DataSource = "dts.XLS";
  8 package.Execute();
  9 }
  
  现在项目中遇到问题:
  1。插入数据时需要插入时间等Excel数据源中不存在的数据
  2。Excel数据源中数据有的需要转化,像数值形,导入后变成了1。23131E12等形式
  3。插入数据时需要从Sql中查询数据再插入
  
  现在解决了第一条和第三条的一步分:
  在上述配置 数据转化任务 时,
  
  
  DTSDestination("ICC") = DTSSource("SIM Number");
   DTSDestination("IMSI") = DTSSource("IMSI");
   DTSDestination("PIN1") = DTSSource("PIN1");
   DTSDestination("PUK1") = DTSSource("PUK1");
   DTSDestination("PIN2") = DTSSource("PIN2");
   DTSDestination("PUK2") = DTSSource("PUK2");
   DTSDestination("MSISDN") = DTSSource("MSISDN");
   DTSDestination("Fax") = DTSSource("Fax");
   DTSDestination("Data") = DTSSource("Data");
   DTSDestination("Barring") = DTSSource("Barring");
   DTSDestination("MailFormID") = DTSGlobalVariables("MailFromID").Value;
   DTSDestination("ReceiveDate") = new Date().getYear() + "-" + new Date().getMonth() + "-" + new Date().getDate();
   return(DTSTransformStat_OK);
  其中,MailFromID为全局变量,添加方法为包 菜单 属性里面选择全局变量,可在C#中对其进行赋值:
  
  foreach(GlobalVariable global in package.GlobalVariables)
  {
   if (global.Name == "MailFromID") {
   package.GlobalVariables.Remove(global.Name);
   }
  }
  package.GlobalVariables.AddGlobalVariable("MailFromID",MailFromID);
  
  插入时间:
  DTSDestination("ReceiveDate") = new Date().getYear() + "-" + new Date().getMonth() + "-" + new Date().getDate();
  用javascript拼出来的 哈哈
  
  插入数据时需要从Sql中查询数据再插入:
  在包里添加新的任务:
  执行Sql任务
  SELECT AddressList.*
  FROM AddressList
  WHERE (ID = ?)
  然后配置 输入和输出参数
  
  还剩下第2条没搞定,希望这2天能搞定~
  
  http://calmzeal.cnblogs.com/archive/2006/05/28/411499.html
【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航