如何从.csv填充IDataReader以与SqlBulkCopy.WriteToServer(IDataReader)一起使用

时间:2012-03-02 14:50:57

标签: c# c#-4.0

今天有人提到使用WriteToServer的IDataReader版本(注意:数据存储在.csv文件中)比使用大型.csv文件的数据表更快。不幸的是,我很难找到关于它实际上如何工作/应该如何实施的信息。

我发现的链接只有以下内容:

  

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

  1. 实际存储的数据在哪里?
  2. 我会在a处输入一行吗? 时间?
  3. 如何拆分特定字符,即',' 情况?
  4. 这是一件非常棘手的事吗?

    由于

2 个答案:

答案 0 :(得分:1)

从大型CSV文件批量插入数据的一种方法是使用OLE DB Provider for Jet读取CSV文件。

您可以使用Schema.ini文件来描述CSV文件格式,并将OleDbDataReader作为参数传递给SqlBulkCopy.WriteToServer方法。

答案 1 :(得分:1)

this。它解释了如何使用ODBC提供程序读取文本的CSV,然后使用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
      }
   }
}