首页 新闻 会员 周边 捐助

dbf to mysql 数据迁移工具

1
悬赏园豆:200 [已解决问题] 解决于 2015-03-28 09:49

我现在在做一个软件,其中涉及到dbf和excel导入到mysql里,然后在进行后续的处理,我发现native for mysql导入非常快。可是我的软件,从文件读取一条数据,insert到数据库中,循环执行,速度非常慢。请问是怎么回事?

native for mysql是怎么实现高速的?

我要做的是一个窗体软件,数据导入之后还要进行后续的处理。怎样才可以把这样的工具集成进我的软件里?

王洪旭的主页 王洪旭 | 初学一级 | 园豆:26
提问于:2015-03-16 15:55
< >
分享
最佳答案
0

dataReader读取数据,组成sql语句,传送给服务器

王洪旭 | 初学一级 |园豆:26 | 2015-03-28 09:47
其他回答(4)
0

1、简单说,同一个功能,不同软件开发人员写的代码性能可以相差100倍。

2、窗体软件,据我所知,NAVICATE是有License的,你要集成可能要问下这公司。

3、不想付钱的话,也简单,自己写代码实现导入功能好了。

4、运行慢,优化代码。

5、自己优化不来,看书,Google。

6、最省时间的方法,找高手。

收获园豆:50
爱编程的大叔 | 园豆:30844 (高人七级) | 2015-03-16 16:59
0

我只能说取一条,插一条的方式不对。

1、批量读取,开启事务批量插入

2、直接用reader构建通道,一边读,一边写。

 

以上可供参考,个人觉得要直接集成这样的工具还是有困难,毕竟是exe,而且是收费的。

收获园豆:75
幻天芒 | 园豆:37207 (高人七级) | 2015-03-17 09:13

恩恩,谢谢。使用的dataReader。在while里面,每咋攒够500条插入一批。还是慢。

支持(0) 反对(0) 王洪旭 | 园豆:26 (初学一级) | 2015-03-17 10:17

@王洪旭: 其实我还是建议用datatable的,你可以测试下慢在哪个步骤。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-03-17 10:19

@幻天芒: 我只会用dataTable读数据,不会用datatable写数据。另外,源数据太大,直接datatable就把内存爆了

支持(0) 反对(0) 王洪旭 | 园豆:26 (初学一级) | 2015-03-17 20:26

@王洪旭: datatable也是要分批次的。每次控制在千条左右。如果写,搜索一下全是答案。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-03-17 20:38

@幻天芒: 数据源是vfp的,只有top,没法select中间部分

支持(0) 反对(0) 王洪旭 | 园豆:26 (初学一级) | 2015-03-17 22:23

@王洪旭: 那就按照能用的方式走了,呵呵~

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-03-17 23:01
0

批量处理肯定是最快的方法,当你的数据量很大的时候可以考录先读100条在统一插入,可以使用两条线程,一条用来读数据,一条用来插入数据

收获园豆:75
刘宏玺 | 园豆:14020 (专家六级) | 2015-03-17 10:27

正解

1.用控制台程序

2.多线程读取、插入数据(Parallel)

3.数据表去索引

支持(0) 反对(0) walen | 园豆:429 (菜鸟二级) | 2015-03-17 18:33

@walen: 数据表去了索引再建合适吗,建索引需要多长时间?这个是桌面程序,将来要给不会sql的人用

支持(0) 反对(0) 王洪旭 | 园豆:26 (初学一级) | 2015-03-17 20:25

@王洪旭: 数据量有多大?

支持(0) 反对(0) walen | 园豆:429 (菜鸟二级) | 2015-03-18 10:06

@walen: 3000w

支持(0) 反对(0) 王洪旭 | 园豆:26 (初学一级) | 2015-03-20 22:39
0

微软的SSIS包可以实现,配置好导入任务后可以用C#代码调用

ZQT | 园豆:107 (初学一级) | 2015-03-22 12:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册