现在有很多工具可以将mysql数据库中数据直接dump为excel表格模式,例如,navicat,sqlyog等,但是个人认为最好用是navicat,但是navicat需要收费。

通过select into outfile 可将数据导出为.txt格式,然后再通过python脚本将.txt格式转换成xls格式。

MySQL导出文本语句:

SELECT * FROM table_name INTO OUTFILE "/tmp/tmp_xls.txt" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '
';

Python封装脚本:

#!/bin/env python
# -*- encoding: utf-8 -*-
import datetime
import time
import os
import sys
import xlwt #需要的模块,安装:pip install xlwt

def txt2xls(filename,xlsname):  #文本转换成xls的函数,filename 表示一个要被转换的txt文本,xlsname 表示转换后的文件名
    print 'converting xls ... '
    f = open(filename)   #打开txt文本进行读取
    x = 0                #在excel开始写的位置(y)
    y = 0                #在excel开始写的位置(x)
    xls=xlwt.Workbook()
    sheet = xls.add_sheet('sheet1',cell_overwrite_ok=True) #生成excel的方法,声明excel
    while True:  #循环,读取文本里面的所有内容
        line = f.readline() #一行一行读取
        if not line:  #如果没有内容,则退出循环
            break
        for i in line.split(','):#读取出相应的内容写到x,即从数据库导出时的分隔符
            item=i.strip().decode('utf8')
            sheet.write(x,y,item)
            y += 1 #另起一列
        x += 1 #另起一行
        y = 0  #初始成第一列
    f.close()
    xls.save(xlsname+'.xls') #保存

if __name__ == "__main__":
    filename = sys.argv[1]
    xlsname  = sys.argv[2]
    txt2xls(filename,xlsname)

执行命令:

[root@hankyoon ]# python python_xls.py tmp_xls.txt abc

 [root@hankyoon ]# ls abc.xls
  abc.xls