delphi读取EXCEL中数据写入数据库,如何加快速度?

代斯Max 2018-05-28 05:58:25
delphi读取EXCEL中数据,20W条数据,写入mysql数据库。
在事务中,for循环,每隔1K条提交一次数据,完成时间约4分钟。
如果是40W条,时间就翻倍了。
请问如何优化下,能提高速度?谢谢
...全文
3797 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueStorm 2018-10-09
  • 打赏
  • 举报
回复
joanagle 2018-10-09
  • 打赏
  • 举报
回复
引用 14 楼 lyhoo163 的回复:

大数据的导入,只要EXCEL的字段(列)设置准确,通过SQL Server Management Studio Express。
就可以直接导入,速度也快。


你这种只适合03版的EXCEL,对07版以后的EXCEL不适用
boylafong 2018-09-10
  • 打赏
  • 举报
回复
保证列的正确,可以用sqlserver自己带的工具
lyhoo163 2018-09-08
  • 打赏
  • 举报
回复

大数据的导入,只要EXCEL的字段(列)设置准确,通过SQL Server Management Studio Express。
就可以直接导入,速度也快。
  • 打赏
  • 举报
回复
可以先插入到TClientDataSet,再写回数据库表。
秋天之落叶 2018-09-05
  • 打赏
  • 举报
回复
我刚才测试了一下,使用insert into...from openrowset (ACE.OLEDB.12.0)10万条记录用时18秒,速度不错。

但是,加到20万条记录,开始导入后30秒时提示查询超时,调整命令和连接的延时到120秒,均是在开始导入30秒时查询超时。
秋天之落叶 2018-09-05
  • 打赏
  • 举报
回复
哦,delphi版本XE10.2 ,sql server 2014,驱动ACE.OLEDB.12.0。
顺便问一下,如何修正查询超时的问题?
秋天之落叶 2018-09-05
  • 打赏
  • 举报
回复
ado设置timeout=0后,20万条记录,39秒导入成功
cate1019 2018-09-04
  • 打赏
  • 举报
回复
引用 8 楼 sailxia 的回复:
別分几次提交,整理好Excel为sql,用事务一次提交就好,我试了一下,24万多的数据提交给服务器,也就花了 68 秒。

你是用什么方式打开Excel的呢?能否分享一下代码?我也碰到速度慢的问题。
Frank.WU 2018-06-04
  • 打赏
  • 举报
回复
別分几次提交,整理好Excel为sql,用事务一次提交就好,我试了一下,24万多的数据提交给服务器,也就花了 68 秒。
Frank.WU 2018-06-04
  • 打赏
  • 举报
回复
看看你提交过程?
flynetxu 2018-06-01
  • 打赏
  • 举报
回复
试试如下方法 insert into 你的表 SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source=你的EXCEl文件;Extended Properties=EXCEL 12.0')...[表名$]
zhoufs 2018-05-30
  • 打赏
  • 举报
回复
先用手工方法,将Excel中的数据导入到SQL Server,再将数据从SQL Server读入到 MySQL 中
xiaocongzhi 2018-05-29
  • 打赏
  • 举报
回复
用数据流的方法最快,网上有教程的
秋天之落叶 2018-05-29
  • 打赏
  • 举报
回复
使用DBGridEh的SaveDBGridEhToExportFile几千条数据瞬间形成EXCEL,但是EXCEL导入数据库没有试过,也不知道DBGridEh有没有这个函数
代斯Max 2018-05-29
  • 打赏
  • 举报
回复
引用 1 楼 lyhoo163 的回复:
1、读取EXCEL时,不用OLE模式,第三方控件比较快。 2、开辟多线程,分别读取数据。 3、提高硬件读取速度,好机器可加快速度。
现是使用StringList对象读取Excel,所有数据都在StringList对象中,这个瞬间就读取完了。 然后就是在事务中,循环这个StringList对象,循环取出数据,再每隔1K条提交一次数据。 整个流程是这样的。 有第三方控件的话,麻烦说明一下是哪个?谢谢
lyhoo163 2018-05-28
  • 打赏
  • 举报
回复
1、读取EXCEL时,不用OLE模式,第三方控件比较快。 2、开辟多线程,分别读取数据。 3、提高硬件读取速度,好机器可加快速度。

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧