我现在在做一个软件,其中涉及到dbf和excel导入到mysql里,然后在进行后续的处理,我发现native for mysql导入非常快。可是我的软件,从文件读取一条数据,insert到数据库中,循环执行,速度非常慢。请问是怎么回事?
native for mysql是怎么实现高速的?
我要做的是一个窗体软件,数据导入之后还要进行后续的处理。怎样才可以把这样的工具集成进我的软件里?
dataReader读取数据,组成sql语句,传送给服务器
1、简单说,同一个功能,不同软件开发人员写的代码性能可以相差100倍。
2、窗体软件,据我所知,NAVICATE是有License的,你要集成可能要问下这公司。
3、不想付钱的话,也简单,自己写代码实现导入功能好了。
4、运行慢,优化代码。
5、自己优化不来,看书,Google。
6、最省时间的方法,找高手。
我只能说取一条,插一条的方式不对。
1、批量读取,开启事务批量插入
2、直接用reader构建通道,一边读,一边写。
以上可供参考,个人觉得要直接集成这样的工具还是有困难,毕竟是exe,而且是收费的。
恩恩,谢谢。使用的dataReader。在while里面,每咋攒够500条插入一批。还是慢。
@王洪旭: 其实我还是建议用datatable的,你可以测试下慢在哪个步骤。
@幻天芒: 我只会用dataTable读数据,不会用datatable写数据。另外,源数据太大,直接datatable就把内存爆了
@王洪旭: datatable也是要分批次的。每次控制在千条左右。如果写,搜索一下全是答案。
@幻天芒: 数据源是vfp的,只有top,没法select中间部分
@王洪旭: 那就按照能用的方式走了,呵呵~
批量处理肯定是最快的方法,当你的数据量很大的时候可以考录先读100条在统一插入,可以使用两条线程,一条用来读数据,一条用来插入数据
正解
1.用控制台程序
2.多线程读取、插入数据(Parallel)
3.数据表去索引
@walen: 数据表去了索引再建合适吗,建索引需要多长时间?这个是桌面程序,将来要给不会sql的人用
@王洪旭: 数据量有多大?
@walen: 3000w
微软的SSIS包可以实现,配置好导入任务后可以用C#代码调用