searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

如何将mongoDB数据快速导入mysql

2024-11-18 09:21:52
5
0

在现代数据驱动的应用中,数据的流动和转换是至关重要的。随着数据库技术的不断发展,MongoDB和MySQL作为两种流行的数据库管理系统,各自具有独特的优势和应用场景。MongoDB以其灵活的文档存储和强大的查询能力,成为许多NoSQL应用的首选;而MySQL则以其关系型数据库的特性、事务支持和高度可扩展性,在OLTP(联机事务处理)系统中占据重要地位。

然而,在实际应用中,我们可能会遇到需要将数据从MongoDB迁移到MySQL的场景。这可能是因为项目需求的变化、数据存储架构的调整,或者是为了利用MySQL在某些特定查询和事务处理上的优势。本文将详细介绍如何将MongoDB中的数据导出并导入到MySQL中,包括数据导出、数据格式转换和数据导入等关键步骤。通过本文的指导,你可以轻松实现MongoDB到MySQL的数据迁移,确保数据的一致性和完整性。

接下来,我们将展示具体的代码实现过程。

 

import pymongo, json
import mysql.connector


port = 8080
user_name = 'xx'
user_pwd = ''
database = 'xx'
collection = 'data'
# 连接MongoDB
mongo_client = pymongo.MongoClient('mongodb://{user_name}:{user_pwd}@{host}:{port}/{database}'.\
    format(user_name=user_name, user_pwd=user_pwd, host=host, port=port, database=database))
mongo_db = mongo_client[database]
mongo_collection = mongo_db[collection]
# 查询数据
data = mongo_collection.find()
# 连接MySQL数据库
mydb = mysql.connector.connect(
    host='xxx.xx.xxx.xxx',
    port=8081,
    user="xx",
    password="",
    database="test"
)
# 获取MySQL数据库游标
cursor = mydb.cursor()
# 插入数据,以下列名是例子
field_list = ['id', 'account_id', 'cls_id','afflux_num_faild', 'afflux_store_size', \
                'afflux_size', 'incr_size', 'timestamp', 'create_time', 'update_time']
field_str = ', '.join(field_list)
s_str = ', '.join(['%s' for i in range(len(field_list))])
def insert_data(data, collection, field_str, s_str, field_list, cursor, mydb):
    try:
        id_num = 0
        for document in data:
            sql = "INSERT INTO {collection} ({field_str}) \
                VALUES ({s_str})".format(collection=collection, field_str=field_str, s_str=s_str)
            id_num += 1
            values = [id_num]
            for field in field_list[1:]:
                value = document[field]
                if isinstance(value, list) or isinstance(value, dict):
                    value = json.dumps(value)
                values.append(value)
            cursor.execute(sql, values)
            print('%s done'%id_num)
    except Exception as ex:
        # 提交事务
        cursor.close()
        mydb.commit()
        # 打印受影响的行数
        mydb.close()
        print(str(ex))
        print(cursor.rowcount, "records inserted.")
        return
       
    # 提交事务
    cursor.close()
    mydb.commit()
    # 打印受影响的行数
    mydb.close()
    print(cursor.rowcount, "records inserted.")
insert_data(data, collection, field_str, s_str, field_list, cursor, mydb)

0条评论
作者已关闭评论
张****旸
2文章数
0粉丝数
张****旸
2 文章 | 0 粉丝
张****旸
2文章数
0粉丝数
张****旸
2 文章 | 0 粉丝
原创

如何将mongoDB数据快速导入mysql

2024-11-18 09:21:52
5
0

在现代数据驱动的应用中,数据的流动和转换是至关重要的。随着数据库技术的不断发展,MongoDB和MySQL作为两种流行的数据库管理系统,各自具有独特的优势和应用场景。MongoDB以其灵活的文档存储和强大的查询能力,成为许多NoSQL应用的首选;而MySQL则以其关系型数据库的特性、事务支持和高度可扩展性,在OLTP(联机事务处理)系统中占据重要地位。

然而,在实际应用中,我们可能会遇到需要将数据从MongoDB迁移到MySQL的场景。这可能是因为项目需求的变化、数据存储架构的调整,或者是为了利用MySQL在某些特定查询和事务处理上的优势。本文将详细介绍如何将MongoDB中的数据导出并导入到MySQL中,包括数据导出、数据格式转换和数据导入等关键步骤。通过本文的指导,你可以轻松实现MongoDB到MySQL的数据迁移,确保数据的一致性和完整性。

接下来,我们将展示具体的代码实现过程。

 

import pymongo, json
import mysql.connector


port = 8080
user_name = 'xx'
user_pwd = ''
database = 'xx'
collection = 'data'
# 连接MongoDB
mongo_client = pymongo.MongoClient('mongodb://{user_name}:{user_pwd}@{host}:{port}/{database}'.\
    format(user_name=user_name, user_pwd=user_pwd, host=host, port=port, database=database))
mongo_db = mongo_client[database]
mongo_collection = mongo_db[collection]
# 查询数据
data = mongo_collection.find()
# 连接MySQL数据库
mydb = mysql.connector.connect(
    host='xxx.xx.xxx.xxx',
    port=8081,
    user="xx",
    password="",
    database="test"
)
# 获取MySQL数据库游标
cursor = mydb.cursor()
# 插入数据,以下列名是例子
field_list = ['id', 'account_id', 'cls_id','afflux_num_faild', 'afflux_store_size', \
                'afflux_size', 'incr_size', 'timestamp', 'create_time', 'update_time']
field_str = ', '.join(field_list)
s_str = ', '.join(['%s' for i in range(len(field_list))])
def insert_data(data, collection, field_str, s_str, field_list, cursor, mydb):
    try:
        id_num = 0
        for document in data:
            sql = "INSERT INTO {collection} ({field_str}) \
                VALUES ({s_str})".format(collection=collection, field_str=field_str, s_str=s_str)
            id_num += 1
            values = [id_num]
            for field in field_list[1:]:
                value = document[field]
                if isinstance(value, list) or isinstance(value, dict):
                    value = json.dumps(value)
                values.append(value)
            cursor.execute(sql, values)
            print('%s done'%id_num)
    except Exception as ex:
        # 提交事务
        cursor.close()
        mydb.commit()
        # 打印受影响的行数
        mydb.close()
        print(str(ex))
        print(cursor.rowcount, "records inserted.")
        return
       
    # 提交事务
    cursor.close()
    mydb.commit()
    # 打印受影响的行数
    mydb.close()
    print(cursor.rowcount, "records inserted.")
insert_data(data, collection, field_str, s_str, field_list, cursor, mydb)

文章来自个人专栏
软件工具
2 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0