現在有很多工具可以將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 '\n';
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