добавить столбец при копировании данных в sql - PullRequest
4 голосов
/ 01 февраля 2010

Я использую SqlBulkCopy для массовой вставки некоторых записей из одной таблицы в другую. Запрос использует SqlDataReader для получения данных. Единственное различие, которое имеет значение (помимо порядка столбцов, который обрабатывается в сопоставлениях) между таблицами, состоит в том, что в таблице назначения есть столбец даты, в который необходимо добавить текущую дату. Этой даты нет в исходной таблице. Как я могу добавить это в текущий процесс, который работает нормально, минус это?

Текущий рабочий код выглядит так:

SqlCommand cmd = new SqlCommand("SELECT * from dbo.source", cn);
            SqlDataReader rdr = cmd.ExecuteReader();                

            using (SqlBulkCopy copy = new SqlBulkCopy(cn))
            {
                copy.ColumnMappings.Add(0, 0);
                copy.ColumnMappings.Add(1, 2);
                copy.ColumnMappings.Add(3, 3);
                copy.ColumnMappings.Add(2, 4);
                copy.ColumnMappings.Add(5, 5);
                copy.ColumnMappings.Add(14, 6);
                copy.DestinationTableName = "destination";
                copy.WriteToServer(rdr);
            }

БД sql 2008 ENT.

1 Ответ

6 голосов
/ 01 февраля 2010

Вы можете просто добавить его, чтобы он возвращался вашим SELECT:

SELECT *, GETDATE() AS CurrentDate from dbo.source

А затем просто добавьте еще одно ColumnMapping для него.

...