加快插入mdb

Eri*_*ric 3 c# ms-access

有没有办法加快插入到mdb?

 using (StreamReader sr = new StreamReader(_localDir + "\\" + _filename))
  while ((line = sr.ReadLine()) != null)
{
   //sanitize the data
}
Run Code Online (Sandbox Code Playgroud)

对于来自csv的约2mil记录,这需要大约20秒,但是当我添加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();

}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?连接池?线程?这是我的constr Provider = Microsoft.Jet.OLEDB.4.0; Data Source = mypath; Jet OLEDB:Engine Type = 5"

问候

_Eric

Fio*_*ala 5

您是否可以使用直接从csv插入的查询?例如:

SELECT ID,Field1 INTO NewTable 
FROM [Text;HDR=YES;FMT=Delimited;IMEX=2;DATABASE=C:\Docs\].Some.CSV
Run Code Online (Sandbox Code Playgroud)

您可以使用与非标准分隔符类似的东西,但是您需要与要导入的文件位于同一目录中的Schema.ini文件.它只需要包含:

[tempImportfile.csv]
TextDelimiter='
Run Code Online (Sandbox Code Playgroud)

您将不得不稍微改变连接字符串,这似乎工作:

Text;HDR=YES;FMT=Delimited;DATABASE=C:\Docs\
Run Code Online (Sandbox Code Playgroud)