【发布时间】:2010-02-11 23:34:44
【问题描述】:
有没有办法加快对 mdb 的插入?
using (StreamReader sr = new StreamReader(_localDir + "\\" + _filename))
while ((line = sr.ReadLine()) != null)
{
//sanitize the data
}
这大约需要 20 秒来处理来自 csv 的约 200 万条记录 但是当我添加 mdb 插入时,我在 10 分钟内几乎无法获得 10,000 条记录,所以你可以看到它需要永远
using (StreamReader sr = new StreamReader(_localDir + "\\" + _filename))
while ((line = sr.ReadLine()) != null)
{
//sanitize the data
using (OleDbConnection con = new OleDbConnection(_conStr))
using (OleDbCommand cmd = new OleDbCommand())
cmd.Parameters.AddWithValue...//I have 22 params
cmd.ExecuteNonQuery();
}
有没有更好的方法?连接池?穿线? 这是我的 constr Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mypath;Jet OLEDB:Engine 类型=5"
问候
_埃里克
【问题讨论】:
-
您需要将逻辑从一次插入一行更改为一次性插入整个批次。我不知道 C#,所以无法告诉您如何做到这一点,但在我看来,这似乎是您的代码与 CSV 导入之间存在差异的明显原因。我会说你最好的方法是@Remou 给出的方法。