У меня есть фрагмент кода, который копирует данные из электронной таблицы Excel в таблицу MSSQL, используя DataReader и SqlBulkCopy. Он работал нормально, пока я не создал первичный ключ в таблице, и теперь он не работает. Сначала я удаляю содержимое таблицы SQL, прежде чем снова заполнить ее данными из Excel.
Поскольку я перемещаю лишь небольшой объем данных, мне было интересно, есть ли лучший способ сделать это, чем использование BulkCopy?
Обновление: ниже приведен относительный код, и я получаю сообщение об ошибке: «Заданное значение типа String из источника данных не может быть преобразовано в тип float указанного целевого столбца».
using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
{
connection.Open();
OleDbCommand cmd = new OleDbCommand
("SELECT Name, Date, Amount FROM ExcelNamedRange", connection);
using (OleDbDataReader dr = cmd.ExecuteReader())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "SqlTable";
bulkCopy.WriteToServer(dr);
}
}
}