如何从sqlserver同步百万数据至mysql

lalala疯 2019-09-19 12:14:33
最近有个任务,需要连接其他服务器上的数据库,几个小时内将数据拷贝到另一个数据库上。 目前是使用jdbc将数据从sqlserver查询出来存进map,再插入至mysql。如果数据一多,五百万条数据开多线程是否能解决?
...全文
470 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnblog2017 2019-10-15
  • 打赏
  • 举报
回复
可以试试用logstash之类的工具,这种通用的工具,更有效率。
s478853630 2019-10-13
  • 打赏
  • 举报
回复
引用 楼主 lalala疯 的回复:
最近有个任务,需要连接其他服务器上的数据库,几个小时内将数据拷贝到另一个数据库上。
目前是使用jdbc将数据从sqlserver查询出来存进map,再插入至mysql。如果数据一多,五百万条数据开多线程是否能解决?


多台机器多线程批处理,数据库内存扩容,
经过1个多月的研究,抽取一百万数据不到半分钟了
_明月 2019-10-06
  • 打赏
  • 举报
回复

可以使用ETL工具Kettle来处理数据问题,我公司目前Oracle数据库、Mysql数据库、HBase、Hive,在处理数据导入、导出、同步时,都是使用Kettle来处理的。




代码间的舞者 2019-10-04
  • 打赏
  • 举报
回复
主要要考虑的问题是内存吧。一次能够最多处理多少行吧。
weixin_43869905 2019-09-29
  • 打赏
  • 举报
回复
引用 10 楼 weixin_43869905 的回复:
我有一个想法 兄弟,你把数据查出来,生成.sql文件,最后连接mysql 执行这个.sql文件.......我没有试过,不知道可行不可行,,,,,,
请忽略,这个
不行......
weixin_43869905 2019-09-29
  • 打赏
  • 举报
回复
我有一个想法 兄弟,你把数据查出来,生成.sql文件,最后连接mysql 执行这个.sql文件.......我没有试过,不知道可行不可行,,,,,,
cheng297 2019-09-29
  • 打赏
  • 举报
回复
引用 7 楼 lalala疯 的回复:
[quote=引用 2 楼 cheng297的回复:]你这个先存进map里面进行缓存的话,数据一多就变慢,可以考虑把缓存干掉,直接根据查询结果,生成插入SQL语句,对这个过程使用多线程分条件迁移。
如何将map缓存后清理?这一步不会[/quote] 查到数据是不是会先缓存下来,一次查出来的数据量过大,这不就变慢了吗?还有内存溢出的可能,这种数据量大的根本不适合缓存在内存上。最好就是拿到JDBC的结果集循环获取数据的时候,直接生成插入SQL语句,然后再进行插入操作,或者是限定多少条数据就进行一次数据插入操作。
正怒月神 2019-09-27
  • 打赏
  • 举报
回复
之前只试过同类型的数据库同步。 楼主试过下面方式吗 https://blog.csdn.net/idays021/article/details/78427478
lalala疯 2019-09-27
  • 打赏
  • 举报
回复
引用 2 楼 cheng297的回复:
你这个先存进map里面进行缓存的话,数据一多就变慢,可以考虑把缓存干掉,直接根据查询结果,生成插入SQL语句,对这个过程使用多线程分条件迁移。
如何将map缓存后清理?这一步不会
lalala疯 2019-09-27
  • 打赏
  • 举报
回复
引用 5 楼 小卜兔的回复:
不一定用代码考吧,用ETL或者别的工具试试。
开始有使用elt工具直接转移,但是后面发现服务器上的端口不能开放,也就是说我elt用了白用
  • 打赏
  • 举报
回复
不一定用代码考吧,用ETL或者别的工具试试。
weixin_43869905 2019-09-21
  • 打赏
  • 举报
回复
引用 3 楼 冬雪晶 的回复:
[quote=引用 楼主 lalala疯 的回复:]
最近有个任务,需要连接其他服务器上的数据库,几个小时内将数据拷贝到另一个数据库上。
目前是使用jdbc将数据从sqlserver查询出来存进map,再插入至mysql。如果数据一多,五百万条数据开多线程是否能解决?


我觉得你这个需求还可以接受,
我现在遇到的是1分钟内把一千多万数据从mysql抽取到oracle,每天自动抽,也可以手动抽
哎,惆怅![/quote]
你这个是不是有点夸张 mysql 一千万数据 查询都得好几分钟, 你还一分钟插入1000w条
s478853630 2019-09-21
  • 打赏
  • 举报
回复
引用 楼主 lalala疯 的回复:
最近有个任务,需要连接其他服务器上的数据库,几个小时内将数据拷贝到另一个数据库上。
目前是使用jdbc将数据从sqlserver查询出来存进map,再插入至mysql。如果数据一多,五百万条数据开多线程是否能解决?


我觉得你这个需求还可以接受,
我现在遇到的是1分钟内把一千多万数据从mysql抽取到oracle,每天自动抽,也可以手动抽
哎,惆怅!
瘦死的黑骆驼 2019-09-19
  • 打赏
  • 举报
回复
用多线程肯定会减少些时间的
cheng297 2019-09-19
  • 打赏
  • 举报
回复
你这个先存进map里面进行缓存的话,数据一多就变慢,可以考虑把缓存干掉,直接根据查询结果,生成插入SQL语句,对这个过程使用多线程分条件迁移。

81,092

社区成员

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

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