SSIS脚本任务:从datatable1到datatable2中进行选择

时间:2018-12-13 06:51:29

标签: c# sql sql-server ssis script-task

我正在使用SQL 2014,Visual Studio2013。我有以下代码是较大脚本任务的一部分:

//Load DataTable1 with Source Excel Sheet Data
OleDbCommand oconn = new OleDbCommand("select * from [" + sheetname + "]", cnn);
OleDbDataAdapter adp = new OleDbDataAdapter(oconn);
DataTable dt = new DataTable();
adp.Fill(dt);

我接下来要做的是从datatable1中选择目标数量的列,然后填充另一个datatable。像这样:

//Load another DataTable with Data from datatable1
OleDbCommand oconn2 = new OleDbCommand("select [column1], [column2] from datatable1", cnn);
OleDbDataAdapter adp2 = new OleDbDataAdapter(oconn2);
DataTable dt2 = new DataTable();
adp2.Fill(dt2);

这可能吗?其背后的原因很复杂,但我不知道有其他解决方法。我的源文件是Excel。因此,需要将数据放入数据表中。然后,需要修改列名称。然后可以使用修改后的列名创建表。但是首先,由于我不确定是否要修改源文件,因此需要将数据按原样放入数据表中。

谢谢。

1 个答案:

答案 0 :(得分:0)

使用要添加到其中的列的数据类型和新名称定义第二个DataTable。然后,您可以使用DataTable方法,通过使用初始Add中列的顺序位置来填充此对象,如下所示。

            DataTable dt2 = new DataTable();
            dt2.Columns.Add("NewColumnName1", typeof(int));
            dt2.Columns.Add("NewColumnName2", typeof(string));

            //in this example dt is the original DataTable
            foreach (DataRow dr in dt.Rows)
            {
                          //add only necessary columns by their
                          //ordinal position in source DataTable
                         dt2.Rows.Add(dr[1], dr[0]);
            }