【问题标题】:Fastest method to handle dbf from C#从 C# 处理 dbf 的最快方法
【发布时间】:2011-04-13 08:00:31
【问题描述】:

我使用 OLEDB 将数据插入 DB4 .dbf 文件。插入 5,500 行大约需要 2.5 分钟。所以我需要一种更快的方法来实现它,因为我的数据将有多达 80,000 行,而且花费的时间太痛苦了。有没有其他更快的方法可以做到这一点?根据您的看法,哪种方式最好?

PS:请提及 aprox。如果可能,您的方法所花费的时间

【问题讨论】:

  • 您是对所有插入使用一个事务还是每次插入一个事务?
  • 在单个查询中插入多行可以大大加快您的工作速度...
  • @Joey:不,我是逐行插入。
  • 根据我的回答编辑您的插入脚本/应用程序,您会看到结果:)
  • @Joey:我试着让它成为一个单一的交易。还是很慢。

标签: c# dbf


【解决方案1】:

在单个查询中插入多行可以大大加快您的工作。
例如:我刚刚尝试使用 100,000 INSERT 插入 100,000 行,并使用 1,000 INSERT,每行 100 行:我的速度提高了大约 100!!
区别在于使用

INSERT INTO table (....) VALUES (...)

INSERT INTO table (....) VALUES (...),(...),(...),(...),(...),...

因此,编辑您的插入函数以一次使用 100 条(例如)记录。

【讨论】:

  • @Vicky:你试过这个解决方案吗?你有没有发现一些改进?
  • @Marco:我无法将其作为单个查询插入,因为每行要插入的列名不同:(
  • @Vicky:如何在数据库中保存具有不同列名的行?我不知道这是可能的。或者也许我误解了你的意思:)
  • 我的错误。我通过删除具有空值的单元格(列)来插入每一行。所以查询每次都是不同的。正如你所说,我正在尝试修改它。将尝试:D
  • 我做不到。当我按照你所说的那样使用时,它会给出“最后缺少分号(;)”错误:(
猜你喜欢
  • 1970-01-01
  • 2019-06-29
  • 2015-07-29
  • 2011-11-25
  • 2023-03-28
  • 2015-02-03
  • 1970-01-01
  • 2013-03-11
  • 2012-09-13
相关资源
最近更新 更多