需求背景:
公司内部由于开发的维护的网站及工具使用的数据库,由于时间比较悠久,架构比较旧,当开发人及维护员离职后,一旦服务崩溃后新的员工没法恢复服务使用了,在只有遗留数据库备份文件的情况下,有需要查询旧的数据资源。
造成的原因:
开发及运维人员没有完整的开发和部署文档,旧的技术或者架构早已经被弃用,年轻人对于比较老旧的技术了解的不多。
解决方案
1. 重新开发新的网站,并且使用旧的数据库
2. 重新开发新的网站,不是用旧的数据库,提供查询就数据的功能
方案选择分析:
由于旧的数据使用频率比较低,而且主要是查询需求,而新的需求需要增加一些字段,在旧的数据表并没有预留相关的字段,所以采用方案 2. 对于什么形式的查询功能,通过综合考虑,旧的数据库条目大概几万条,查询频率低于每天 5 次,所以采取导出到 CSV 文件的做法。开发一个专门的查询功能作用不大。
1. 导入备份 sql 文件到数据库
使用以下命令将备份数据库文件导入,可以提前创建一个专门作为数据还原的数据库。
- msyql - h localhost - uroot - p citools < e: \mysql\mysqldb2.sql2
- import MySQLdb import csv conn = MySQLdb.connect(host = '127.0.0.1', #数据库ip地址user = 'root', #username passwd = 'password', #你的用户密码db = 'dbaname')#使用database名称cur = conn.cursor() sql = "select * from ReceivedItem"#ReceivedItem修改为你要导出数据的表cur.execute(sql) results = cur.fetchall() csvfile = file('old_citool.csv', 'wb') writercsv = csv.writer(file('old_citool.csv', 'wb'))#CSV文件第一行,注释每一列都是什么数据writercsv.writerow(['id', 'create_date', 'site', 'PO', 'category', 'PlacedLocation', 'ReceivedInOFA', 'ItemName', 'Model', 'SN', 'bin', 'assetid', 'quantity', 'RMAID']) for item in results: '''每个item对应你数据表里的一个字段,并不是每一个字段根据需求导出'''item_dict = [item[1], item[3], item[4], item[5], item[6], item[7], item[8], item[9], item[10], item[11], item[12], item[13], item[14], item[15], item[18]] writercsv.writerow(item_dict) csvfile.close() cur.close()
参考:
来源: http://lib.csdn.net/article/linux/45764