从 C# 处理 dbf 的最快方法
Posted
技术标签:
【中文标题】从 C# 处理 dbf 的最快方法【英文标题】:Fastest method to handle dbf from C# 【发布时间】:2011-04-13 08:00:31 【问题描述】:我使用 OLEDB 将数据插入 DB4 .dbf 文件。插入 5,500 行大约需要 2.5 分钟。所以我需要一种更快的方法来实现它,因为我的数据将有多达 80,000 行,而且花费的时间太痛苦了。有没有其他更快的方法可以做到这一点?根据您的看法,哪种方式最好?
PS:请提及 aprox。如果可能,您的方法所花费的时间
【问题讨论】:
您是对所有插入使用一个事务还是每次插入一个事务? 在单个查询中插入多行可以大大加快您的工作速度... @Joey:不,我是逐行插入。 根据我的回答编辑您的插入脚本/应用程序,您会看到结果:) @Joey:我试着让它成为一个单一的交易。还是很慢。 【参考方案1】:在单个查询中插入多行可以大大加快您的工作。 例如:我刚刚尝试使用 100,000 INSERT 插入 100,000 行,并使用 1,000 INSERT,每行 100 行:我的速度提高了大约 100!! 区别在于使用
INSERT INTO table (....) VALUES (...)
和
INSERT INTO table (....) VALUES (...),(...),(...),(...),(...),...
因此,编辑您的插入函数以一次使用 100 条(例如)记录。
【讨论】:
@Vicky:你试过这个解决方案吗?你有没有发现一些改进? @Marco:我无法将其作为单个查询插入,因为每行要插入的列名不同:( @Vicky:如何在数据库中保存具有不同列名的行?我不知道这是可能的。或者也许我误解了你的意思:) 我的错误。我通过删除具有空值的单元格(列)来插入每一行。所以查询每次都是不同的。正如你所说,我正在尝试修改它。将尝试:D 我做不到。当我按照你所说的那样使用时,它会给出“最后缺少分号(;)”错误:(以上是关于从 C# 处理 dbf 的最快方法的主要内容,如果未能解决你的问题,请参考以下文章