当前位置:  开发笔记 > 编程语言 > 正文

如何在SSIS脚本任务中循环遍历通用对象

如何解决《如何在SSIS脚本任务中循环遍历通用对象》经验,为你挑选了2个好方法。

我有一个从SQL进程传递到脚本任务的通用对象.该对象本质上是一个数据表,但为了从sql进程获取完整的结果集,我必须将它存储在一个通用对象中.

所以如果我有:

Object A = Dts.Variables[0];

然后,我将如何提取并操纵其值.

基本上我想做的是:

Object A = Dts.Variables[0];
strin x = A.Column[0].value.tostring();

但这显然不会起作用.



1> Tequila..:

我无法获得上述任何答案,因此下面列出的是我用来加载数据表的代码."User :: transactionalRepDBs"是Object(System.Object)的SSIS变量,它是通过执行SQL任务脚本的"完整结果集"加载的.使用的脚本任​​务是C#. 这个链接帮助了我.

using System.Data.OleDb;

DataTable dt= new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.Fill(dt, Dts.Variables["User::transactionalRepDBs"].Value);
String _showMe;

foreach (DataRow row in dt.Rows)
{
   //insert what you want to do here
           for (int i = 0, _showMe = ""; i < row.ItemArray.Length; i++ )
           {
               _showMe += row.ItemArray[i].ToString() + " | ";
           }

           MessageBox.Show("Data row #" + dt.Rows.IndexOf(row).ToString() + " value: " + _showMe);
}



2> billinkc..:

从Object解析数据表没有任何问题.我见过Andy Leonard在他的ETL框架上做到这一点.

你是在正确的道路上,但你没有看到整个画面.此代码将类型为Variable(大约)的对象分配给A.然后,您尝试访问不存在的属性.

Object A = Dts.Variables[0];

你需要抓住变量的.您可以将其作为A的分配

Object A = Dts.Variables[0].Value;

或者,如果您需要对实际变量执行其他操作,则保留当前的A代码分配,然后访问Value属性.

Object A = Dts.Variables[0];
DataTable B = (DataTable) A.Value;
DataRow C = B.Row[0];
string x = C.Column[0].ToString();

上面的datatable/datarow代码是近似的.重要的一点就是访问SSIS变量所持有的好东西,需要访问该对象的Value.


Downvoter,关心帮助我理解应该做些什么来改善这个答案?
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有