V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
enginex
V2EX  ›  MySQL

MySQL 如何定时发送数据到 SQL Server?

  •  
  •   enginex ·
    satorioh · 2017-10-23 21:27:48 +08:00 · 4738 次点击
    这是一个创建于 2591 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟主要负责前端,对 sql 只会一些基础操作,目前公司有一台测试 db(MySQL,暂由我代管),一台中

    间 db(异地、SQL Server,由别人管理),需要定期将 MySQL 一个 table 的数据发送到 SQL Server 的特

    定 table 上(两个 table 字段有所不同)

    请教下一般如何操作?

    感谢!

    第 1 条附言  ·  2017-10-24 22:04:20 +08:00
    感谢各位的热心帮助,最后还是用 kettle 解决了( ETL tool 真的很强大),sql 脚本方面,小弟抽空还会再努力学习,毕竟这才是正道
    19 条回复    2017-10-24 12:30:19 +08:00
    chenychen
        1
    chenychen  
       2017-10-23 21:33:34 +08:00
    dblink
    shiny
        2
    shiny  
       2017-10-23 21:38:36 +08:00
    既然是定期,时效性要求就不会高吧,可以写个脚本导数据,定时执行即可。
    enginex
        3
    enginex  
    OP
       2017-10-23 21:42:51 +08:00
    @shiny 是用 linux crontab 脚本吗?另外,两个 table 字段不同,也可以吗
    shiny
        4
    shiny  
       2017-10-23 21:45:27 +08:00
    @enginex 都可以,windows 下的计划任务,Linux 下的 crontab。只要脚本写对了,字段不同也没问题。需要注意的是出错能被监控到。
    enginex
        5
    enginex  
    OP
       2017-10-23 21:50:04 +08:00
    @shiny 好的,我试试
    dexterzzz
        6
    dexterzzz  
       2017-10-23 22:02:53 +08:00
    有 sql server 用 SSIS
    enginex
        7
    enginex  
    OP
       2017-10-23 22:12:20 +08:00
    @dexterzzz 是用 SSIS 可以抓取 MySQL 数据?字段不同也可以吗?
    DearMark
        8
    DearMark  
       2017-10-23 22:46:19 +08:00
    Topshelf 搭配 Quartz.Net 可以解决所有问题 On Windows
    https://dotblogs.com.tw/wasichris/2017/01/14/165637
    XiaoFaye
        9
    XiaoFaye  
       2017-10-24 07:40:46 +08:00
    变动不频繁的话,自己写 SQL Script,然后定时执行就好了。
    enginex
        10
    enginex  
    OP
       2017-10-24 09:41:08 +08:00
    @DearMark 似乎有些复杂,而且主机是 linux,不过依然感谢
    likuku
        11
    likuku  
       2017-10-24 10:06:57 +08:00
    会在程序语言里访问 DB 使用 SQL 么?会的话,那么写个程序同时操作两台 DB,使用 SQL 从 MYSQL 提取数据,按 SQLServer 的表结构重组数据,最后把拼好的数据插入 SQLServer 即可了吧。

    定时,用 win 的计划任务 / lin 的 crontab 都可以吧。
    nandaye
        12
    nandaye  
       2017-10-24 10:23:20 +08:00
    kettle/informatica etc,你现在需要一个 ETL 软件。
    sunkuku
        13
    sunkuku  
       2017-10-24 10:57:52 +08:00
    可以试试阿里开源的 canal
    enginex
        14
    enginex  
    OP
       2017-10-24 10:59:49 +08:00
    @likuku 只用过 php 操作 mysql,基础的增删改查,数据重组拼接这块儿不太熟悉
    enginex
        15
    enginex  
    OP
       2017-10-24 11:00:54 +08:00
    @nandaye @sunkuku 感谢,目前在尝试 SSMA,不行的话再换其他
    sryanyuan
        16
    sryanyuan  
       2017-10-24 11:06:48 +08:00
    伪装成从节点 从 mysql 解析 binlog 数据 然后组装成 sql 语句在 mssql 执行
    likuku
        17
    likuku  
       2017-10-24 11:54:19 +08:00
    @enginex 会增删改查就行了。

    所谓数据重组拼接:mysql 获取 a 库 b 表 100 行数据,b1 列 t1 数据类型,将其以 sqlserver 的 mt1 数据类型 插入 ma 库 mb 表 即可。

    这是最基本的思路了。若涉及到自增字段,那得查 sqlserver 相关如何处理。
    noNOno
        18
    noNOno  
       2017-10-24 11:55:59 +08:00
    kettle 写个脚本就好了
    你需要一个 ETL 工具
    enginex
        19
    enginex  
    OP
       2017-10-24 12:30:19 +08:00
    @likuku 好的,我试试,感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1239 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:10 · PVG 07:10 · LAX 15:10 · JFK 18:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.