python 导入数据库的脚本
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,该脚本针对批量导入数据sql文件,data目录存放所要导入的sql文件,list.txt存放要导入的列表信息。脚本内容如下:#!/usr/bin/env python# -*- coding:utf-
千家信息网最后更新 2024年11月24日python 导入数据库的脚本
该脚本针对批量导入数据sql文件,data目录存放所要导入的sql文件,list.txt存放要导入的列表信息。
脚本内容如下:
#!/usr/bin/env python# -*- coding:utf-8 -*-import os, sys, logging, datetime# 日志文件配置if not os.path.isdir('logs'): os.mkdir('logs')logging.basicConfig(level=logging.INFO, format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M', filename='logs/importable.log', filemode='a')console = logging.StreamHandler()console.setLevel(logging.INFO)formatter = logging.Formatter('%(message)s')console.setFormatter(formatter)logging.getLogger('').addHandler(console)logger = logging.getLogger(__name__)# 从本地配置文件中读取主机列表信息def readinfo(confile): info_list = [] if os.path.isfile(confile): with open(confile, 'r+') as f: for line in f.readlines(): if not line.startswith("#"): dict = {} dict['id'] = line.split()[0] dict['host'] = line.split()[1] dict['name'] = line.split()[2] info_list.append(dict) return info_list else: logger.error(u"本地配置文件%s不存在!" % confile) sys.exit(1)def readsqlfile(data): sql_list = [] # 判断本地的sql文件是否存在目录是否存在。 if os.path.isdir(data): for sql_file in os.listdir(data): if sql_file: sql_list.append(os.path.join(data,sql_file)) else: logger.error(u"本地%s目录中没有要导入的sql文件!"%data) else: logger.error(u"%s 不是一个目录。"%data) return sql_list# 循环info_list和sql_list将sql导入每一个服务器def importhost(info_list, sql_list): succ_list = [] fail_list = [] for ser in info_list: for sql_file in sql_list: cmd = "%s/mysql -u%s -p%s -h'%s' %s < %s" % (mysql_path, mysql_user, mysql_passwd, ser['host'], ser['name'] ,sql_file) status = os.system(cmd) if status == 0: msg = "%s -- %s -- %s 导入sql:%s 完毕!"%(ser['id'],ser['host'],ser['name'],sql_file) succ_list.append(msg) logger.info(msg) else: msg = "%s -- %s -- %s 导入sql:%s 失败!" % (ser['id'], ser['host'], ser['name'], sql_file) fail_list.append(msg) logger.error(msg) sys.exit(1) return succ_list,fail_listdef yesorno(confile,data): print "数据库列表如下:" info_list = readinfo(confile) for ser in info_list: print "%s --- %s ---- %s"%(ser['id'],ser['host'],ser['name']) iput = raw_input("你是否要导入sql文件 %s,请输入yes or no:" % (os.listdir(data))) while True: if iput.lower() in ['y','yes']: print "你选择了继续执行程序动作!" break elif iput.lower() in ['n','no']: print "你选择了退出程序动作!" sys.exit(1) else: print "你输入了非法的字符,脚本并未执行导入sql文件的任何动作,程序即将退出。" sys.exit(1)if __name__ == '__main__': # 基本信息配置变量 data = r'data' # 存放本地sql文件的目录 confile = 'list.txt' # 存放服务器列表信息,格式如: id host dbname : 1 192.168.2.20 game_name_cn1 # MySQL变量 mysql_path = '/usr/local/mysql/bin' mysql_user = 'root' mysql_passwd = 'xirexrt,mf' yesorno(confile,data) startime = datetime.datetime.now() sql_list = readsqlfile(data) info_list = readinfo(confile) succ,fail= importhost(info_list,sql_list) logger.info(u'总共执行成功%s条. \r\n 总共执行失败%s条.'%(len(succ), len(fail))) endtime = datetime.datetime.now() logger.info(u"\r\nTotal time: %s ms" % ((endtime - startime).microseconds / 1000))
文件
目录
信息
配置
脚本
动作
程序
数据
变量
服务器
服务
输入
选择
数据库
成功
主机
内容
字符
日志
格式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中心化服务器优缺点
满足全家游戏需求的服务器配置
小学生网络安全防御
网络安全近义词
软件开发背景透明
舟山营销网络技术哪家好
广航数据库技术
我的世界无红石农田服务器
疾病症状数据库
计算机网络技术要学电学吗
软件开发费用统计表
个人云存储服务器搭建
河南濮阳服务器名称
杭州网络安全应急指挥中心
广东网络安全宣传周主题
java服务修改数据库地址
哪个区服务器最多
数据库局内搜索
青浦区智能软件开发厂家直销
数据库erp软件有哪些
数招软件开发与大数据区别
网络安全专业是工科还是理科
江苏专业软件开发报价
电脑网络安全选项
湖北正规网络技术分类标准
天启网络技术有限公司靠谱吗
安仁安卓软件开发培训中心
武汉银行软件开发中心
不想做软件开发了转行
查找文献各个数据库的区别
- 上一篇
SQL Server数据库中的表名称和字段实例分析
这篇文章主要介绍"SQL Server数据库中的表名称和字段实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SQL Server数据库中的表名称和字段实
- 下一篇
ORA-00600: 内部错误代码, 参数: [qosdDirRead: dircnt mismatch], [809], [808],
问题描述:上午一套RAC实例频繁报警ORA-00600: 内部错误代码, 参数: [qosdDirRead: dircnt mismatch], [809], [808]。经过MOS查询只发现在12.