浏览 332 次
|
该帖已经被评为新手帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-07-10
想问下各路高手
现在有两个系统A,B A系统中某医院中已存在的,B系统是我们正在开发中的. A系统中允许我们使用他们的数据库(可以建视图),不能动程序 现要求从A系统中提取有用数据字段,导入到我们的系统中,要求批量导入和单条导入 导入的过程中,会涉及B系统中的多张数据表.也就是A系统中的一条数据,导入到我们系统中会影响我们系统中的多张数据表? 批量导入的时候,最好不要取用单条导入的形式,这样速度太慢? 请问有经历过的朋友如何解决此类问题? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
别导入外健
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
我以前项目中也遇到过类似情况,不过我们的项目中是将A系统中的多个表关联导入到B系统的一个表中,由于中间还需要进行A系统表中提取的数据进行计算处理,所以我们当时是写了中间程序进行专门导库处理,记录每天大概100W条记录。每天定时执行一次。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
cyberblue 写道 别导入外健 现在不是这个问题,是流程的问题,批量导入流程不知道怎么走 |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
这种问题我遇到过,我之前是做新旧系统的数据移植,新旧系统的数据结构完全不同,结果是我直接用Java写了一个程序进行数据移植(两个数据库是不同的数据库,MySQL > Oracle),开始为了方便使用Hibernate,后来发现大批量数据处理Hibernate确实是瓶颈,改用JDBC,100万级的数据由2天变成2小时。
注意,转移过程中一定要做数据完整性检查。还有,在转移的时候,可以考虑为源数据库增加临时索引,而把目标数据库的所有索引暂时屏蔽掉,这会大大提高转移效率。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
我的经验的,使用JDBC batch insert操作,能大幅提高性能。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
johnnylzb 写道 这种问题我遇到过,我之前是做新旧系统的数据移植,新旧系统的数据结构完全不同,结果是我直接用Java写了一个程序进行数据移植(两个数据库是不同的数据库,MySQL > Oracle),开始为了方便使用Hibernate,后来发现大批量数据处理Hibernate确实是瓶颈,改用JDBC,100万级的数据由2天变成2小时。
注意,转移过程中一定要做数据完整性检查。还有,在转移的时候,可以考虑为源数据库增加临时索引,而把目标数据库的所有索引暂时屏蔽掉,这会大大提高转移效率。 谢谢,这些是细节的问题,主要是导入的过程怎么去做,代码的思路? |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
感觉单条导入直接用jdbc连接程序搞定就成;批量导入可以试试在B数据库中创建临时表,用程序同步A的数据,然后在B内用DBMS分开数据……
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
按照我的习惯,只倒入少量而且重要的,比如人员列表,其他大量而且不常用的就不导入,留在原来那台服务器里(如果不怕费那点电的话),然后把查询结果混合到一起。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-10
如果是mysql,可以采用把数据存到文本文件中,然后用shell,执行loaddata操作。loaddata是我目前见到过的最快的。我曾经在一张表里面倒入7000w的数据,时间在15m左右。mysql5。2*2核cpu。4G内存。sata硬盘。
|
|
| 返回顶楼 | |










