Как заполнить IDataReader из .csv для использования с SqlBulkCopy.WriteToServer (IDataReader) - PullRequest
1 голос
/ 02 марта 2012

Сегодня кто-то упомянул, что использование версии WriteToServer для IDataReader (примечание: данные хранятся в файле .csv) будет быстрее, чем использование таблиц данных для больших файлов .csv.К сожалению, я изо всех сил пытаюсь найти информацию о том, как это на самом деле работает / должно быть реализовано.

единственная найденная ссылка находится ниже:

http://www.developerfusion.com/article/122498/using-sqlbulkcopy-for-high-performance-inserts/

  1. Где на самом деле хранятся данные?
  2. Буду ли я импортировать по одной строке за раз?
  3. Как разделить определенные символы, например, ',' в этом случае?

Это то, чтодовольно сложно?

Спасибо

Ответы [ 2 ]

1 голос
/ 02 марта 2012

См. это .В нем объясняется, как читать CSV с помощью поставщика ODBC для текста, а затем использовать SqlBulkCopy для импорта его в БД.Например:

using(var con = new OdbcConnection(
    "Driver={Microsoft Text Driver (*.csv)};" +
    "Dbq=c:\\somepath\\;" + 
    "Extensions=csv"))
{
   con.Open();
   using(var cmd = new OdbcCommand("select * from [" + myCsvFileName + "]", con))
   {
      using(IDataReader reader = cmd.ExecuteReader())
      {
           // Do whatever
      }
   }
}
1 голос
/ 02 марта 2012

Одним из способов массовой вставки данных из большого CSV-файла является чтение CSV-файла с использованием поставщика OLE DB для Jet .

Вы можете использовать файл Schema.ini для описания формата файла CSV и передать OleDbDataReader в качестве параметра методу SqlBulkCopy.WriteToServer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...