MySQL数据导出导入任务脚本
#!/usr/bin/env python
#-*- encoding: utf8 -*-
import time
import os
import mysql.connector
#定义一些全局变量
work_dir="/data1/dbacrontab/tmptranfiles/"
mysqldump_data_list=[]
mysqldump_struc_list=[]
mysqldump_datastruc_list=[]
mysqldump_config_list=[]
# 此函数用来打印输出日志
def print_log(mylogprint):
my_log_day = time.strftime("%Y-%m-%d")
my_log_time = time.strftime("%Y-%m-%d %H:%M:%S")
my_log_file = work_dir+'log_'+my_log_day+'.log'
with open(my_log_file,"aw") as f:
f.write(my_log_time+' '+mylogprint)
# 此函数用来导出数据
def export_mysqldump(getdbconfig,exportdbconfig):
# status='1'表示此表需要导出,status='0'表示此表不需要导出。
# export_data='1'表示导出数据和结构,export_data='0'表示不导出数据,只导出结构。
sql_export_data = "select distinct ALIAS,SCHEMA_NAME,TABLE_NAME,export_data,status,1_133_status as status_1_133 from dbaconfig.cf_export_tables "
cnn = mysql.connector.connect(**getdbconfig)
cursor = cnn.cursor()
cursor.execute(sql_export_data)
export_user=exportdbconfig['user']
export_password=exportdbconfig['password']
export_port=exportdbconfig['port']
for (ALIAS,SCHEMA_NAME,TABLE_NAME,export_data,status,status_1_133) in cursor:
mysqldump_name=work_dir+ALIAS+'-'+SCHEMA_NAME+'-'+TABLE_NAME+'.sql'
ifexport_data=str(export_data)
ifstatus=str(status)
ifstatus_1_133=str(status_1_133)
# 导出数据和结构
if ifstatus == '1' and ifexport_data == '1':
mysqldump_nodata= " "
mysqldumcmd="mysqldump -h%s -u%s -p%s -P%s --replace %s --single-transaction --skip-add-locks --complete-insert %s %s > %s " % (ALIAS,export_user,export_password,export_port,mysqldump_nodata,SCHEMA_NAME,TABLE_NAME,mysqldump_name)
os.system(mysqldumcmd)
mysqldump_data_list.append(mysqldump_name)
print_log("export data: from_service=%s, from_database=%s, from_table=%s \n" % (ALIAS,SCHEMA_NAME,TABLE_NAME))
# 不导出数据,只导出结构
if ifstatus == '1' and ifexport_data == '0':
mysqldump_nodata= "-d"
mysqldumcmd="mysqldump -h%s -u%s -p%s -P%s --replace %s --single-transaction --skip-add-locks --complete-insert %s %s > %s " % (ALIAS,export_user,export_password,export_port,mysqldump_nodata,SCHEMA_NAME,TABLE_NAME,mysqldump_name)
os.system(mysqldumcmd)
mysqldump_struc_list.append(mysqldump_name)
print_log("export only structure: from_service=%s, from_database=%s, from_table=%s \n" % (ALIAS,SCHEMA_NAME,TABLE_NAME))
# 导出config_mobp2p数据库数据
if ifstatus_1_133 == '1':
mysqldump_nodata= " "
mysqldumcmd="mysqldump -h%s -u%s -p%s -P%s --replace %s --single-transaction --skip-add-locks --complete-insert %s %s > %s " % (ALIAS,export_user,export_password,export_port,mysqldump_nodata,SCHEMA_NAME,TABLE_NAME,mysqldump_name)
os.system(mysqldumcmd)
mysqldump_config_list.append(mysqldump_name)
print_log("export config_mobp2p data: from_service=%s, from_database=%s, from_table=%s \n" % (ALIAS,SCHEMA_NAME,TABLE_NAME))
# 此函数用来导入数据
def import_from_mysqldump(mysqldump_file,importdbconfig):
import_host=importdbconfig['host']
import_user=importdbconfig['user']
import_password=importdbconfig['password']
import_port=importdbconfig['port']
for dumpsql in mysqldump_file:
print_log("import_data: %s \n" % (dumpsql))
mysqlimport=" mysql -h%s -u%s -p%s -P%s mobp2p < %s " % (import_host,import_user,import_password,import_port,dumpsql)
os.system(mysqlimport)
# 定义合并两个list函数
def merge_list(list_1,list_2,list_all):
for item in list_1:
list_all.append(item)
for item in list_2:
list_all.append(item)
return list_all
# 定义导出列表数据库相关信息,根据dbaconfig.cf_export_tables可判断要导出那些表
getdbconfig_13_105={
'host':'xxxx',
'user':'xxxx',
'password':'xxxx',
'port':'xxxx',
'database':'xxxx'
}
# 定义要导出数据库信息
exportdbconfig_exp={
'user':'xxxx',
'password':'xxxx',
'port':'xxxx',
}
# 定义要导入数据库信息
importdbconfig_13_106={
'host':'xxxx',
'user':'xxxx',
'password':'xxxx',
'port':'xxxx'
}
print_log("==================== 开始导出数据 ====================\n")
export_mysqldump(getdbconfig_13_105,exportdbconfig_exp)
print_log("==================== 数据导出完毕 ====================\n")
# 把 mysqldump_data_list 、 mysqldump_struc_list 两个列表合并成 mysqldump_datastruc_list 一个列表
merge_list(mysqldump_data_list,mysqldump_struc_list,mysqldump_datastruc_list)
# 根据列表 mysqldump_datastruc_list 内容,导入数据到 importdbconfig_13_106
print_log("==================== 开始导入数据到 10.30.13.106 ====================\n")
import_from_mysqldump(mysqldump_datastruc_list,importdbconfig_13_106)
print_log("==================== 导入数据到 10.30.13.106 完毕 ====================\n")
# 根据列表 mysqldump_config_list 内容,导入数据到 importdbconfig_13_106
print_log("==================== 开始导入config_mobp2p数据库数据到 10.30.13.106 ====================\n")
import_from_mysqldump(mysqldump_config_list,importdbconfig_13_106)
print_log("==================== 导入数据到 10.30.13.106 完毕 ====================\n")
MySQL数据导出导入任务脚本的更多相关文章
- MySQL数据导出导入【转】
MySQL基础 关于MySQL数据导出导入的文章,目的有二: 1.备忘 2.供开发人员测试 工具 mysqlmysqldump 应用举例 导出 导出全库备份到本地的目录 mysqldump -u$US ...
- 关于MySQL数据导出导入
工具 mysqlmysqldump 应用举例 导出 导出全库备份到本地的目录 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --d ...
- 完美转换MySQL的字符集 Mysql 数据的导入导出,Mysql 4.1导入到4.0
MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级.降级,特别是 ...
- 涂抹mysql笔记-数据导出导入
数据导出导入<>利用CSV存储引擎加载数据:CSV存储引擎基于CSV格式文件存储数据,CSV格式是纯文本格式的文件,以逗号分隔取值.CSV引擎表的所有列值不能为空.Excel可以直接打开有 ...
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便.快捷的操作,使得我们不再为Oracle本身丑陋.难用的UI而抱怨.由于我们一般 ...
- 【原创】SQLServer将数据导出为SQL脚本的方法
最近很多同学问到一个问题,如何将MSSQLServer的数据库以及里面的数据导出为SQL脚本,主要问的是MSSQLServer2000和2005,因为2008的管理器已经有了这个功能,2000和200 ...
- [转]Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
本文转自:http://www.cnblogs.com/wuhuacong/archive/2012/03/09/2387680.html Oracle中对数据对象和数据的管理,无疑都是使用PL/SQ ...
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...
- 在sqlServer中把数据导出为insert脚本
有时候为了把数据导出为insert脚本,不得不用一些小工具,或者通过自己写存储过程来完成这一操作.其实SqlServer本身就有这种功能.以下是详细步骤:
随机推荐
- 用SSL保Samba安全
用SSL保Samba安全 在企业中用Samba做为文件服务器是非常容易的事了,那如何保证存储数据的安全,如何保证数据传输的安全呢?我以前介绍过通过Samba安全级别和加装防病毒软件在 ...
- 软考之路--从生活着手,看PV怎样操作
PV操作.是软考其中一个非常重要的考点,一听到这个名词,顿时赶脚高大上有么有,在软考的历年试题中,也不乏PV操作的身影,老师也对PV操作进行了一次讲课,那时年少.听得稀里糊涂,也不是非常理解,在小编的 ...
- jquery表格简单插件
1.一直对jquery插件感觉非常神奇.今天动手写了一个超级简单的案例. 2.效果 3.体会 a.jquery插件编写能力. 须要具备一定js能力的编写.还有写css样式的运用:希望以后这方面会有提高 ...
- 最小生成树(MST,minimum spanning tree)
生成树:由图生成的树,由图转化为树,进一步可用对树的相关操作来对图进行操作.最小指的是权值最小: 生成树是边的集合,如下图所示的最小生成树:MST={{a,b},{a,f},{f,c}} 本文主要探讨 ...
- 3.第一个Node.js程序:Hello World!
转自:http://www.runoob.com/nodejs/nodejs-tutorial.html 以下是我们的第一个Node.js程序: console.log("Hello Wor ...
- 5.使用SOAP的XML消息传递
转自:https://blog.csdn.net/u014066037/article/details/51724658 使用SOAP的XML消息传递的简易流程图: 详细步骤如下: (1)服务请求者的 ...
- 团队作业-Beta冲刺(3)
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业要求在哪里 https://edu.cnblo ...
- Linux与好莱坞电影
Linux与好莱坞电影 2009年底上映的<阿凡达>是电影特效的巅峰之作,除此之外还有<2012>每次观看之后总能让我们热血沸腾. 很早以前电影特效都 ...
- 18/9/9牛客网提高组Day1
牛客网提高组Day1 T1 中位数 这好像是主席树??听说过,不会啊... 最后只打了个暴力,可能是n2logn? 只过了前30% qwq #include<algorithm> #in ...
- COGS 163 [USACO Mat07] 牛语
COGS 163 [USACO Mat07] 牛语 输入文件:latin.in 输出文件:latin.out 简单对比 时间限制:1 s 内存限制:128 MB 奶牛们听说猪发明了一种秘密 ...