sql备份文件导出到excel

18 篇文章 0 订阅

需求背景:
公司内部由于开发的维护的网站及工具使用的数据库,由于时间比较悠久,架构比较旧,当开发人及维护员离职后,一旦服务崩溃后新的员工没法恢复服务使用了,在只有遗留数据库备份文件的情况下,有需要查询旧的数据资源。
造成的原因:
开发及运维人员没有完整的开发和部署文档,旧的技术或者架构早已经被弃用,年轻人对于比较老旧的技术了解的不多。

解决方案
1. 重新开发新的网站,并且使用旧的数据库
2. 重新开发新的网站,不是用旧的数据库,提供查询就数据的功能

方案选择分析:
由于旧的数据使用频率比较低,而且主要是查询需求,而新的需求需要增加一些字段,在旧的数据表并没有预留相关的字段,所以采用方案2.对于什么形式的查询功能,通过综合考虑,旧的数据库条目大概几万条,查询频率低于每天5次,所以采取导出到CSV文件的做法。开发一个专门的查询功能作用不大。
1. 导入备份sql文件到数据库
使用以下命令将备份数据库文件导入,可以提前创建一个专门作为数据还原的数据库。

msyql -h localhost -uroot -p citools < e:\mysql\mysqldb2.sql2
  1. 编写脚本前先参看需要备份字段,规划那些字段需要备份,那些是没有意义的。

  2. 脚本示例:

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()
  1. 编码问题
    完成后打开文件可能出现汉字乱码的问题,这由于编码格式不同所造成,按照下面的文档可以解决:主要方式用notebook打开CSV文件保存为txt,然后新建excel文件,导入数据即可,需要注意分隔符的选择。

参考:http://jingyan.baidu.com/article/ac6a9a5e4c681b2b653eacf1.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值