Vb.net Access数据库TransferText性能改进

Vb.net Access数据库TransferText性能改进,vb.net,performance,ms-access,vba,Vb.net,Performance,Ms Access,Vba,研究如何提高将数据导入access db的.net工具的性能。在循环中逐行插入应该比.TransferText方法慢,所以我正在寻找一些其他方法来执行相同的导入,但性能更好 目前,我们做了以下工作: .NET应用程序检测到新的文本文件到达 将其放入数据表中 验证数据 创建访问数据库 创建vba模块并插入vba代码 在access中调用DoCmd.TransferText方法 其他流程等 有没有更好的表演技巧需要我研究 谢谢。TransferText方法确实比较慢,但是我也可以做一些代码优化,比如

研究如何提高将数据导入access db的.net工具的性能。在循环中逐行插入应该比.TransferText方法慢,所以我正在寻找一些其他方法来执行相同的导入,但性能更好

目前,我们做了以下工作:

  • .NET应用程序检测到新的文本文件到达
  • 将其放入数据表中
  • 验证数据
  • 创建访问数据库
  • 创建vba模块并插入vba代码
  • 在access中调用DoCmd.TransferText方法
  • 其他流程等
  • 有没有更好的表演技巧需要我研究


    谢谢。

    TransferText方法确实比较慢,但是我也可以做一些代码优化,比如在使用数据库时保持数据库的打开状态,而不是每次迭代都打开和关闭它。此外,我还使用DAO连接到数据库,并执行一些sql语句,大容量插入我直接连接的文本文件记录

    db.Execute("INSERT INTO " & sMdbTableName & " SELECT * FROM [Text;HDR=Yes;FMT=Delimited;Database=" & localPath & "]." & sTextFile & ";")
    
    当我把每一项改进都放在一起时,分配速度大大加快了。 我添加了计时器代码,并分别测试了每种技术。结果是,使用DAO和直接连接到文本文件的bult insert语句的速度大约快5倍


    感谢您的回复和帮助

    您的.net工具”听起来像是一些vba代码,而不是真正的.net(在NET4.0中没有像
    TransferText
    这样的方法)。因此,编写一些针对性能优化的代码很可能会更快。如#6所述,它调用transfertext方法。由于每次必须将vba代码注入数据库时,它都会创建一个新的干净数据库,因为它相信从access中运行它会更快。我想用其他和/或不同的设计来取代transfertext方法,但它需要更快的底线,而不是担心我们如何达到目标。您是否考虑过使用ADODB记录集直接导入数据并绕过transfertext(速度较慢)和插入vba模块(这不需要很长时间,但没有必要)?在根本看不到任何代码的情况下也很难发现问题。如果有比.TransferText方法更快的方法,这可能会提高性能。如果有,我想知道,因为我可以删除方法调用并添加更好更快的代码。DoCmd.TransferText是VBA中作为方法的代码我们正在从VB.NET调用