Loading

数据库迁移:SQL Server To MongoDB

一、问题引入#

业务数据一开始存放在SQL Server上,但随着业务的发展,表中的列有增加或者减少,这些操作对于传统的关系型数据库是很不方便的。
由于种种因素,考虑将数据迁移到MongoDB。MongoDB是一种开源的、分布式、非关系型的数据库,在特定的情况下,可以支持业务的存储和访问。虽然之前从没有接触过MongoDB,为了对比不同数据库的优劣性,顺带研究一下MongoDB,索性就把数据迁移。

经过一番查询,找到了一个推荐度挺高的数据库迁移软件:DataX , 这款迁移工具基本支持市面上所有的数据库(MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS),甚至还支持文件迁移至数据库。

二、解决过程#

简单的阅读了Github中DataX介绍,基本实现原理:A 数据库(reader/writer) --> 内存池 --> B 数据库(reader/writer)
用户需要根据数据库填写配置文档,这里填写 SQL Server(reader) to MongoDB(writer) 的配置文档。

💡 注意事项:

1、删除DataX的debug隐藏文件。若不执行该操作,程序可以无法运行

# 删除 `datax/plugin/reader/` 下的部分文件

`rm -rf datax/plugin/reader/._*`

# 删除 `datax/plugin/writer/` 下的部分文件

`rm -rf datax/plugin/writer/._*`

2、开放Linux的端口:143327017, 或直接关闭防火墙

3、运行环境要求

  • Python(推荐 Python2.6.X)
  • JDK(1.8 以上,推荐 1.8)
  • Linux

1️⃣ DataX的安装和运行

下载和安装过程不做说明,参考文末引用。

2️⃣ sqlserver2mongodb.json

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "sqlserverreader", 
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=xxx"], 
                                "querySql": ["xxx"]
                            }
                        ], 
                        "password": "xxx", 
                        "username": "xxx"
                    }
                }, 
                "writer": {
                    "name": "mongodbwriter", 
                    "parameter": {
                        "address": ["xxx.xxx.xxx.xxx:27017"], 
                        "collectionName": "xxx", 
                        "column": [
                                {
                                        "name": "***",
                                        "type": "int"
                                },
                                {
                                        "name": "***",
                                        "type": "string"
                                }
			], 
                        "dbName": "xxx"
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

3️⃣ 数据库迁移: bin/datax.py job/sqlserver2mongodb.json

三、反思总结#

若反过来,MongDB to SQL Server的配置文档该如何编写呢?

mongodb2sqlserver.json

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mongodbreader",
                    "parameter": {
                        "address": ["xxx.xxx.xxx.xxx:27017"],
                        "collectionName": "xxx",
                        "column": [
				{
                                        "name": "a",
                                        "type": "int"
                                },
                                {
                                        "name": "b",
                                        "type": "string"
                                },
                                {
                                        "name": "c",
                                        "type": "string"
                                },
                                {
                                        "name": "d",
                                        "type": "string"
                                }
                        ],
                        "dbName": "xxx",
			//"query":"{\"b\":\"xxx\",\"c\":\"xxx\"}"
                    }
                },
                "writer": {
                    "name": "sqlserverwriter",
                    "parameter": {
                        "column": [
				"a",
				"b",
				"c",
				"d"
			],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=xxx",
                                "table": ["xxx"]
                            }
                        ],
                        "password": "xxx",
                        "username": "xxx"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

四、参考引用#

01-DataX从入门实战到精通一文搞定

作者:caojun97

出处:https://www.cnblogs.com/caojun97/p/17043266.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   eiSouthBoy  阅读(442)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu