python+mysqldump交互式数据迁移

mysql_data_migrate.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

__author__ = "Jason Li"

import os
import time


"""
数据迁移:
Tips: 执行脚本前先安装python3
python3 mysql_data_migrate.py
"""

print("*" * 50,"请输入源数据库信息", "*" * 50)
src_db_host = input("Enter source db host:")
src_db_user = input("Enter source db user:")
src_db_pwd = input("Enter source db passwd:")
src_db_name = input("Enter source db name:")

print("*" * 50,"请输入目标数据库信息", "*" * 50)
dest_db_host = input("Enter dest db host:")
dest_db_user = input("Enter dest db user:")
dest_db_pwd = input("Enter dest db passwd:")
dest_db_name = input("Enter dest db name:")

filestamp = time.strftime('%Y-%m-%d-%I:%M')
filename = src_db_name + '-' + filestamp + '.sql'


def export_data():
    """
    数据导出
    :return:
    """
    print(">>> Exporting...")
    os.system("mysqldump --single-transaction -u%s -p'%s' -h%s %s > %s"% (src_db_user, src_db_pwd, src_db_host, src_db_name, filename))


def import_data():
    """
    数据导入
    :return:
    """
    print(">>> Creating dest database...")
    os.system("mysql -u%s -p'%s' -h%s -e 'create database %s'" % (dest_db_user, dest_db_pwd, dest_db_host, dest_db_name))

    print(">>> Importing...")
    os.system("mysql -u%s -p'%s' -h%s %s < %s"% (dest_db_user, dest_db_pwd, dest_db_host, dest_db_name, filename))
    os.remove(filename)


def check_result():
    """
    检查是否导入成功
    :return:
    """
    print(">>> Show tables from dest db...")
    check_result = os.system("mysql -u%s -p'%s' -h%s %s -e 'show tables from %s'" % (dest_db_user, dest_db_pwd, dest_db_host, dest_db_name, dest_db_name))
    print(check_result)


if __name__ == '__main__':
    export_data()
    import_data()
    check_result()

mysql_structure_migrate.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import time

"""
数据库表结构迁移:
python3 mysql_structure_migrate.py
"""

print("*" * 50,"请输入源数据库信息", "*" * 50)
src_db_host = input("Enter source db host:")
src_db_user = "adminroot"
src_db_pwd = input("Enter source db passwd:")
src_db_name = input("Enter source db name:")

print("*" * 50,"请输入目标数据库信息", "*" * 50)
dest_db_host = input("Enter dest db host:")
dest_db_user = "adminroot"
dest_db_pwd = input("Enter dest db passwd:")
dest_db_name = input("Enter dest db name:")

filestamp = time.strftime('%Y-%m-%d-%I:%M')
filename = src_db_name + '-' + filestamp + '.sql'


def export_structure():
    """
    数据导出
    :return:
    """
    print(">>> Exporting...")
    os.system("mysqldump --single-transaction -u%s -p'%s' -h%s -d %s > %s" % (src_db_user, src_db_pwd, src_db_host, src_db_name, filename))


def import_structure():
    """
    数据导入
    :return:
    """
    print(">>> Creating dest database...")
    os.system("mysql -u%s -p'%s' -h%s -e 'create database %s'" % (dest_db_user, dest_db_pwd, dest_db_host, dest_db_name))
    
    print(">>> Importing...")
    os.system("mysql -u%s -p'%s' -h%s %s < %s" % (dest_db_user, dest_db_pwd, dest_db_host, dest_db_name, filename))
    os.remove(filename)


def check_result():
    """
    检查是否导入成功
    :return:
    """
    print(">>> Show tables from dest db...")
    check_result = os.system("mysql -u%s -p'%s' -h%s %s -e 'show tables from %s'" % (dest_db_user, dest_db_pwd, dest_db_host, dest_db_name, dest_db_name))
    print(check_result)


if __name__ == '__main__':
    export_structure()
    import_structure()
    check_result()

转载于:https://my.oschina.net/adailinux/blog/3060874

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL数据库提供了一个命令行工具 `mysqldump` ,可以用来导出数据库中的数据。 如果要将数据从一台服务器迁移到另一台服务器,可以使用以下步骤: 1. 在源服务器上使用 `mysqldump` 命令将数据库中的数据导出到文件中。例如: ``` mysqldump -u [username] -p [database_name] > backup.sql ``` 其中 `username` 是数据库的用户名,`database_name` 是要导出的数据库的名称,`backup.sql` 是导出的文件名。 2. 传输 backup.sql 文件到目标服务器。可以使用工具如 scp, FileZilla, ftp... 3. 在目标服务器上进入mysql,创建数据库: ``` mysql -u [username] -p create database [database_name]; exit; ``` 4. 使用 mysql 命令导入导出的数据文件。 ``` mysql -u [username] -p [database_name] < backup.sql ``` 注意: - 如果数据量较大,需要使用参数 --single-transaction , --routines - 如果源数据库和目标数据库版本不同,导入时会出现错误 - 使用备份文件要慎重,先测试在使用 如果您的场景有特殊的需求,可以继续查阅文档详细了解mysqldump 的其它用法。 ### 回答2: 通过mysqldump命令,我们可以方便地将MySQL数据库中的数据迁移到另一个MySQL服务器。mysqldump是一个用于备份和恢复MySQL数据库的工具。 使用mysqldump迁移数据的步骤如下: 1. 打开命令行终端或命令提示符。 2. 输入以下命令格式来生成导出文件: mysqldump -u [用户名] -p [密码] [要导出的数据库名] > [导出文件路径] 其中,[用户名]是源数据库的用户名,[密码]是源数据库的密码,[要导出的数据库名]是要导出的数据库的名称,[导出文件路径]是你想保存导出文件的路径和文件名。 3. 按下Enter键执行命令,系统会要求你输入密码确认。 4. 导出过程中,mysqldump将会把源数据库中的数据写入到导出文件中,包括表结构、数据、索引等等。 5. 等待导出过程完成,这可能会花费一些时间,具体时间取决于数据库的大小和服务器的性能。 6. 导出完成后,你可以将导出文件复制到目标服务器上。 7. 在目标服务器上,打开命令行终端或命令提示符。 8. 输入以下命令格式来导入数据: mysql -u [用户名] -p [密码] [要导入的数据库名] < [导出文件路径] 其中,[用户名]是目标数据库的用户名,[密码]是目标数据库的密码,[要导入的数据库名]是要导入的数据库的名称,[导出文件路径]是你保存导出文件的路径和文件名。 9. 按下Enter键执行命令,系统会要求你输入密码确认。 10. 导入过程中,mysqldump将会把导出文件中的数据写入到目标数据库中。 11. 等待导入过程完成。 12. 导入完成后,你可以在目标MySQL服务器中查看和使用迁移过来的数据。 通过以上步骤,可以使用mysqldump命令迁移数据,保证了数据的完整性和一致性,方便快捷。同时,不仅可以用于迁移数据,还可以用于备份数据库,在需要时进行数据恢复。 ### 回答3: 通过mysqldump迁移数据是一种常用的方法。mysqldump是MySQL数据库中的一个命令行工具,用于备份和恢复数据库。它可以将整个数据库或特定表的数据导出为SQL脚本,然后通过将脚本导入到新的数据库中来迁移数据使用mysqldump迁移数据的具体步骤如下: 1. 打开终端或命令提示符,进入MySQL安装目录的bin文件夹。 2. 输入以下命令来导出需要迁移数据库或表的数据: ``` mysqldump -u 用户名 -p 密码 数据库名 > 导出文件路径 ``` 其中,用户名是具有足够权限的MySQL用户的用户名,密码是该用户的密码,数据库名是要迁移数据库名称,导出文件路径是将导出的数据保存的文件路径。 3. 等待mysqldump完成数据导出操作。 4. 将导出的数据文件传输到目标服务器。 5. 在目标服务器上打开终端或命令提示符,进入MySQL安装目录的bin文件夹。 6. 输入以下命令来导入数据文件到目标数据库: ``` mysql -u 用户名 -p 密码 数据库名 < 导出文件路径 ``` 其中,用户名是具有足够权限的MySQL用户的用户名,密码是该用户的密码,数据库名是目标数据库的名称,导出文件路径是之前导出的数据文件的路径。 7. 等待MySQL完成数据导入操作。 通过上述步骤,我们可以使用mysqldump数据从一个MySQL数据库迁移到另一个MySQL数据库。这种方法适用于小型数据库迁移和备份,并且具有简单和灵活的特点。但是对于大型数据库来说,可能需要其他更复杂的迁移工具和方法来实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值