今天开发跟我说需要将某几张表的某个时间段的数据导出到测试机上,故写了这个程序实现将执行该脚本导出数据并自动上传到测试机。

本脚本分为两个部分:控制远程服务器执行导出脚本和本地获取远程数据并上传到测试机。

第一部分:获取远程服务器数据库文件expertdata.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-08-02 10:24:05
# @Author  : Zhou Jiaan
# @Version : $1.0
###执行方式:python expertdata.py filename starttime endtime

import os
import sys
import datetime
def ExportData(table_name, start_date, end_date):
    today = datetime.date.today()
    os.system(
        "mysql -h10.1.11.37 -uroot -ppassword test -e \"select * from {0} WHERE ordtime BETWEEN '{1}' AND '{2}' \"  >/home/zhouja01/log/20{3}_{4}.txt".format(
            table_name, start_date, end_date,table_name,today))

def main():
    try:
        table_name = sys.argv[1]
        start_date = sys.argv[2]
        end_date = sys.argv[3]
    except Exception as e:
        table_name = input("请输入表名:")
        start_date = input("请输入开始时间:如2018-07-01")
        end_date = input("请输入结束时间如2018-07-31")
    else:
        print("需要导出的语句为:select * from {0} ERE ordertime BETWEEN '{1}' AND '{2}' ".format(table_name, start_date,
                                                                                         end_date))
    finally:
        ExportData(table_name, start_date, end_date)


if __name__ == '__main__':
    main()

第二部分:本地获取远程数据并上传到测试机

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-08-02 11:33:05
# @Author  : Your Name (you@example.org)
# @Link    : http://example.org
# @Version : $Id$
### 执行方式:python RemoteDatabaseSystem.py filename 2018-07-01 2018-07-31

import os
import sys
import datetime
def remote_mysql_system(table_name,start_date,end_date):
    today = datetime.date.today()
    mysql_system_ip = ['XX.XX.XX.XXX', 'XX.XX.XX.XXX', 'XX.XX.XX.XXX'] #保密性要求将ip去掉 你们输入自己的ip便好
    for mysql_ip in mysql_system_ip:
        os.system("ssh zhouja01@{0} 'python /home/zhouja01/bin/expertdata.py {1} {2} {3}'".format(mysql_ip,table_name,
                                                                                                        start_date,
                                                                                                 end_date))
        os.system("scp zhouja01@%s:/home/zhouja01/log/%s%s_%s.txt /home/zhouja01/log/"%(mysql_ip,mysql_ip[3:5],table_name,today))
        os.system("scp /home/zhouja01/log/{0}{1}_{2}.txt root@XX.XX.XX.XXX:/home/zhouja01/log".format(mysql_ip[3:5],table_name,today))

def main():
    try:
        table_name = sys.argv[1]
        start_date = sys.argv[2]
        end_date = sys.argv[3]
   except Exception as e:
        table_name = input("请输入表名:")
        start_date = input("请输入开始时间:如2018-07-01")
        end_date = input("请输入结束时间如2018-07-31")
    else:
        print("需要导出的语句为:select * from {0} WHERE ordtime BETWEEN '{1}' AND '{2}' ".format(table_name, start_date,                                                                                 end_date))
    finally:
        remote_mysql_system(table_name, start_date, end_date)
if __name__ == '__main__':
    main()
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐