Загрузка файла csv на сервер sql - проблема с идентификацией

Учитывая структуру столбцов в файле CSV:

First_Name, Last_Name, Date_Of_Birth

И таблица SQL Server со структурой

ID(PK) | First_Name | Last_Name | Date_Of_Birth

(Идентификатор поля – это идентификатор с автоинкрементом, равным 1)

Как сделать так, чтобы SQL Server не пытался вставить столбец First_Name из файла csv в поле идентификатора?

Для информации CSV загружается в DataTable, а затем копируется на SQL Server с помощью SqlBulkCopy.

Должен ли я изменять файл csv перед импортом, добавляя столбец идентификатора (таблица назначения усекается перед импортом, поэтому не нужно беспокоиться о повторяющихся значениях ключа). Или, возможно, добавить столбец идентификатора в таблицу данных?

Или есть ли параметр в Sql Server, который я мог пропустить?


person MrBliz    schedule 10.01.2011    source источник


Ответы (2)


Вы должны добавить столбец идентификатора в таблицу данных, но не беспокойтесь о заполнении этого поля данными из CSV.

Как только это будет сделано, данные должны выровняться, а поскольку идентификатор является идентификатором с автоинкрементом, вы должны быть в порядке с загрузкой CSV в БД.

person Tony Abrams    schedule 10.01.2011
comment
Спасибо. Для всех, кто сталкивается с этой проблемой, используйте DataTable.Columns.Add(ID).SetOrdinal(0), чтобы добавить столбец идентификатора в начало таблицы данных. - person MrBliz; 10.01.2011

Используйте SqlBulkCopy.ColumnMappings

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopycolumnmapping.aspx

person Mikael Eriksson    schedule 10.01.2011
comment
Это работает только в том случае, если столбец уже находится в файле CSV, не так ли? - person MrBliz; 10.01.2011
comment
Вы должны добавить сопоставление для First_Name, Last_Name, Date_Of_Birth. Идентификатор будет сгенерирован автоматически, поскольку это столбец идентификатора. - person Mikael Eriksson; 10.01.2011
comment
Спасибо. Я использую решение Тони, так как у некоторых есть много файлов CSV с большим количеством столбцов. Добавление сопоставлений столбцов для всех из них займет целую вечность! - person MrBliz; 11.01.2011