各种数据库之间数据迁移工具

前阶段需要把sqlserver上的数据迁移到mysql上,找到了非常好用的工具DB2DB。

下载地址:http://www.szmesoft.com/DB2DB

DB2DB 是目前经过测试速度最快、最稳定实现多种数据库之间进行数据转换的工具。支持 SQL Server、MySQL、SQLite、Access 等多种数据库类型,通过该工具可以把原来的系统,方便快速地部署在不同的数据库甚至是云端数据库下。在大数据情况下(千万级别以上),处理速度比国内外同类软件要高出300%以上。并针对云端数据库中使用最多的 MySQL 数据库进行优化,使得从源数据库复制到新数据库时保留更多的数据表属性设置。这样大大减少程序员、DBA、实施人员将大型数据库进行迁移时的等待、测试和调试时间,减少公司为了测试某系统转换到新数据库系统时的人力成本。

打开失败请看使用说明

1.填写(数据库类型:MSSQL就是sql server)


2.检查是否有误


3.开始完成迁移


希望对你有帮助!


/** * 源数据库库连接池配置 * */ ConnPoolConfig config = new ConnPoolConfig(); config.setMaxPoolSize(30); config.setInitialPoolSize(20); config.setUrl("jdbc:sqlserver://192.168.0.222;databaseName=ciems"); config.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver"); config.setUsername("sa"); config.setPassword("Password2017"); /** * 源库 * "queryDB" DBManager的自定义名称 * config 连接池配置 */ DBManager queryDb = new DBManager("queryDB",config); /** * 目标数据库连接池配置 * */ ConnPoolConfig tarconfig = new ConnPoolConfig(); tarconfig.setMaxPoolSize(30); tarconfig.setInitialPoolSize(20); tarconfig.setDriverClass("com.mysql.jdbc.Driver"); tarconfig.setUrl("jdbc:mysql://localhost:3306/datatransfer?useUnicode=true&characterEncoding=UTF8&useSSL=true"); tarconfig.setPassword("accp"); tarconfig.setUsername("root"); /** * 目标库 */ DBManager insertDb = new DBManager("insertDB",config); /** *做数据导入处理时的接口 * */ InsertHandler handler = new DBInsertHandlerImpl("t_big_data",null,insertDb); /** * 迁移任务的配置,配置关键信息项 */ ApplicationConfig apConfig = new ApplicationConfig("t_big_data"); apConfig.setQueryThreadNum(8); //指定查询线程数量,不指定默认为8 apConfig.setDataNum(5000); //设置每次从源库中抽取的数量 不指定默认为5000 /** * 源表的匹配条件 * 如果希望源表中符合条件的才迁移,请配置此项,禁止加where,请按照以下格式 */ apConfig.setConditionSql("0=0"); /** * 入库方式 * ** * 增量入库 ZLRK, (暂未实现) * 追加入库 ZJRK, (目标库有源表结构的基础上,增加源表的所有数据到目标库中) * 刷新入库 SXRK, (删除目标库的源表结构,自动创建并导入数据) * 更新入库 GXRK (暂未实现) * ** */ apConfig.setInsertType(InsertType.SXRK); /** * 日志线程,开启时可更直观的从标准输出流里观察到运行状态,不指定默认关闭 */ apConfig.setOpenLogThread(true); /** * 生命周期接口,线程不完全 * 分别有以下几个生命周期方法 * createTableDone() 目标库被创建表结构时调用一次 * queryDone(boolean result, int start, int end, long time,Throwable e) * 有数据从源表中查询到数据时被调用,直到任务完成 * result 查询结果 * start 查询起始行 * end 查询结束行 * time 共耗时 单位:ms * e 查询失败时抛出的异常 * insertDone(boolean result, int num, int errorNum, long time,Throwable e) * 有数据导入到目的库时被调用,直到任务完成 * result 导入结果 * num 导入总数量 * errorNum异常数量 * e 导入失败时抛出的异常 * taskDone(int all, int doneNum, int errorNum, long time,List errorRows, List e) * 任务完成时被调用 * all 任务总数据量 * doneNum 已完成的数据量 * errorNum异常的数据量 * time 总耗时 * errorRows异常的行记录 * e 所有的异常 */ TaskRunLog runLog = new TaskRunLogImpl(); /*** * 任务迁移核心类 * 以下是构造方式之一 * ApplicationConfig apConfig:任务关键配置 * DBManager queryDb: 源库 * InsertHandler handler:导入处理器 */ DataThransferApplication app = new DataThransferApplication(apConfig,queryDb,handler,runLog); /** * 初始化任务 */ app.init(); /** * 任务开始 */ app.start();
当要迁移数据库数据量较大时,需要考虑以下几个方面: 1. 网络带宽和稳定性:大数据量的迁移需要较大的网络带宽以及稳定的网络连接,以确保数据能够快速且可靠地传输。您可以评估源数据库和目标数据库之间的网络情况,并确保网络能够满足迁移需求。 2. 数据迁移策略:对于大数据量的迁移,可以采用增量迁移或者分批迁移的策略。增量迁移是指在迁移过程中只迁移最新的数据,而分批迁移则是将数据分成多个批次进行迁移,每次迁移一部分数据。这样可以减少单次迁移数据量,降低风险和压力。 3. 并行处理:一些数据库迁移工具支持并行处理,可以同时进行多个数据迁移任务,提高迁移效率。您可以选择支持并行处理的工具,并配置适当数量的并行任务来加速大数据量的迁移。 4. 数据压缩和加密:在进行大数据量的迁移时,可以考虑使用数据压缩和加密来减少数据传输的大小和保护数据安全。许多数据库迁移工具支持对数据进行压缩和加密,您可以根据需求进行配置。 在选择数据库迁移工具时,需要注意工具的性能、稳定性和易用性。一些常用的数据库迁移工具,如Oracle Data Pump和Oracle GoldenGate,在处理大数据量时都有较好的表现。您可以根据具体需求和预算选择合适的工具,并进行合理的配置和优化来完成大数据量的数据库迁移
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值