ха-ха .. и ты кусаешься сильно ;-)

я есть проблема преобразования строки в дату с использованием SQL Bulkcopy в asp.net 3.5 с C #

Я прочитал большой файл CSV (сCSV-ридер). Одна из прочитанных строк должна быть загружена в столбец Дата SQL Server 2008.

Если текстовый файл содержит, например, строку «2010-12-31», SQL Bulkcopy без проблем загружает его в столбец «Дата».

Однако, если строка '20101231', я получаю ошибку:
Заданное значение типа String из источника данных не может быть преобразовано в дату типа указанного целевого столбца.

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

SqlBulkcopy Columnmappings и т. Д. Все в порядке. Также изменение DateTime не помогает.

Я пытался

SET DATEFORMAT ymd;

Но это не помогает.

Любые идеи, как сказать SQL Server принять этот формат? В противном случае я создам собственное исправление в программе чтения CSV, но я бы предпочел что-то в SQL.

Обновить Следуя двум ответам, я использую SQL массовую копию следующим образом (как предложено в Stackoverflow в другом вопросе):

Читатель CSV (см. Ссылку выше на codeproject) возвращает строковые значения (не строго типизированные). CSVreader реализует System.Data.IDataReader, поэтому я могу сделать что-то вроде этого:

using (CsvReader reader = new CsvReader(path)) 
using (SqlBulkCopy bcp = new SqlBulkCopy(CONNECTION_STRING))
{ bcp.DestinationTableName = "SomeTable"; 
  // columnmappings
  bcp.WriteToServer(reader); } 

Все поля, поступающие из iDataReader, являются строками, поэтому я не могу использовать подход c #, пока не внесу совсем небольшие изменения в CSVreader

Поэтому мой вопрос не связан с тем, как это исправить в C #, я могу это сделать, но я хочу предотвратить это.

Это странно, потому что если вы делаете в SQL что-то вроде

 update set [somedatefield] = '20101231' 

это также работает, только не с тыловой копией.

Есть идеи почему?

Спасибо за любой совет, Pleun

Ответы на вопрос(3)

Ваш ответ на вопрос