Я анализирую CSV с IDataReader, который будет использоваться для операции SqlBulkCopy. Таблица назначения для SqlBulkCopy имеет столбец с типом «Время». Массовое копирование завершается неудачно, потому что оно пытается привести DateTime к TimeSpan. Когда я исследую IDataReader, я обнаруживаю, что IDataReader анализирует столбец "actionTime "как DateTime вместо Time. Как я могу заставить IDataReader анализировать «actionTime »как Time или TimeSpan, чтобы SqlBulkCopy работал?
var csvFile = $"{blobSource}.csv";
string connectionString =
"DSN=testcsv;" + // This is an ODBC Data Source that uses Microsoft Text Driver (*.txt, *.csv)
$"Dbq={LoadConstants.InputFilesDir};" +
"Extensions=csv";
using (var con = new OdbcConnection(connectionString))
{
con.Open();
var cmdText = $@"SELECT * FROM [{csvFile}]";
using (var cmd = new OdbcCommand(cmdText, con))
{
using (IDataReader reader = cmd.ExecuteReader())
{
var schema = reader.GetSchemaTable();
}
}
}
Вот файл" TestTimeCol.txt "
transactionTime
11:11:11
Это дамп переменной "схема". IDataReader анализирует столбец как DateTime
![This is a dump of the schema variable. IDataReader is parsing the column as a DateTime](https://i.stack.imgur.com/ck8Ia.png)
Это ошибка, выдаваемая SqlBulkCopy
![This is the error thrown by SqlBulkCopy](https://i.stack.imgur.com/l1znF.png)
Мой источник данных "testcsv" использует текстовый драйвер Microsoft
![The data source and its driver](https://i.stack.imgur.com/RH0B9.png)