今天有人提到使用WriteToServer的IDataReader版本(注意:数据存储在.csv文件中)比使用大型.csv文件的数据表更快。不幸的是,我很难找到关于它实际上如何工作/应该如何实施的信息。
我发现的链接只有以下内容:
http://www.developerfusion.com/article/122498/using-sqlbulkcopy-for-high-performance-inserts/
这是一件非常棘手的事吗?
由于
答案 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
}
}
}