python 导入数据库的脚本
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,该脚本针对批量导入数据sql文件,data目录存放所要导入的sql文件,list.txt存放要导入的列表信息。脚本内容如下:#!/usr/bin/env python# -*- coding:utf-
千家信息网最后更新 2025年11月06日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安全错误
数据库的锁怎样保障安全
金蝶账套管理怎么改服务器
宝山区市场软件开发诚信合作
数据库money什么意思
多台服务器如何配置
网络技术网站推荐
收缩数据库日志文件sql
迪博内部控制与风险数据库
上传数据到服务器
西电网络安全卫士
怎样维护数据库的安全性
电信卡无法接入服务器
origin数据库数据插值
顺义网络技术
网络安全法自几几年实行
员工考勤管理系统数据库代码
网络安全股权转让
彩票平台软件开发
盘州网络安全系统有哪些
IA520服务器
eia数据库什么时候公布
网络安全涉及哪些范畴举事例说明
计算机网络技术拓扑图
刀片服务器不开机有辐射吗
大疆软件开发面试技巧
违反网络安全红线影响
mac 连接远程数据库
瀑布式软件开发方法论
dns服务器清理垃圾
提示触及网络安全的短信
手机如何连接dell服务器
- 上一篇
SQL Server数据库中的表名称和字段实例分析
这篇文章主要介绍"SQL Server数据库中的表名称和字段实例分析"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SQL Server数据库中的表名称和字段实
- 下一篇
ORA-00600: 内部错误代码, 参数: [qosdDirRead: dircnt mismatch], [809], [808],
问题描述:上午一套RAC实例频繁报警ORA-00600: 内部错误代码, 参数: [qosdDirRead: dircnt mismatch], [809], [808]。经过MOS查询只发现在12.