我正在寻找从多个二进制文件中读取的最快方法,并将所有内容写入多个表中的单个MS Access数据库中。 SQL Server或任何其他数据库都不是一个选项。我正在使用C#。
假设我只有一个包含1 GB数据的文件。
文件以标题(包含列名代码)开头,后跟超过700 000个测量数据块。标头长度不到100个字节。一个数据块长度为1500字节(372 x单浮点数+ 12个字节,用于日期和时间)
必须在第一个数据库表中插入前84个单值
目前,我正在使用二进制阅读器。我正在逐块读取并每块执行10次INSERT语句(ADO.NET)。那将是超过7百万的INSERT。
1.5MB的执行时间约为1分钟--1GB将超过10小时。
有没有办法更快地做到这一点?您认为可以期待什么?
答案 0 :(得分:2)
您应该使用SqlBulkCopy
班级
看到。 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx
答案 1 :(得分:0)
您可能正在承诺每个插页。最好开始一个事务,处理一些固定数量的数据块,比如100或500,然后提交事务并开始另一个事务。保留已提交记录的文本文件日志,以便在出于某种原因需要重新启动时,您知道从哪里开始。
您可以尝试更改用于sycing的Jet引擎属性,但最好只在连接上开始SQL事务,然后在大量记录之后提交。您还需要像this VB example中一样启用自动提交。
此外,如果您指定了排序键,则撤消该键。加载所有数据后,使用ADOX将它们作为索引键。