Задача сценария служб SSIS: выберите из таблицы данных1 в таблицу данных2 - PullRequest
0 голосов
/ 13 декабря 2018

Я использую SQL 2014, Visual Studio 2013. У меня есть следующий код, который является частью большой задачи скрипта:

//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 голосов
/ 17 декабря 2018

Определите второе 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]);
            }
...