利用mysql,用命令行将表导出到excel,带列名!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用mysql,用命令行将表导出到excel,带列名!!!相关的知识,希望对你有一定的参考价值。
谢谢!!rt!
很简单,用navicat的导出功能
关键步骤
到这就可把mysql的表的字段名也导出到Excel
参考技术A 1首先需要知道是导出哪个一个数据库的数据。使用SQL Server Management Studio连接上这个数据库。2
然后确定需要导出哪个表的数据为Excel文件。若表的项目很多,可以右键“表”筛选条件。
3
若知道是哪一个数据库哪一个表,则前面两个步骤可以省略,直接新建查询,使用的SQL命令查询这个表。并可以加上条件语句。
4
在查询出来的结果中,点击最左上角右键全选,选中后,再点击右键,选择“将结果另存为”。同样若选择复制,然后再打开一个空白的EXCEL粘贴进去也可以,适合少量数据。
5
保存类型为CSV格式,此类型的文件可以直接使用的EXCEL打开,并保持列与行不变。
6
将保存的结果打开后与SQL中的结果一致,同样可以部分选择复制,然后粘贴到空白的EXCEl中。 参考技术B 导出为后缀名为CSV格式的文件即可,可以用类似下面的命令:
SELECT t.* INTO OUTFILE '/tmp/table.csv'
FIELDS TERMINATED BY ',' -- 字段以逗号分隔
OPTIONALLY ENCLOSED BY '"' -- 双引号包裹字段
LINES TERMINATED BY ‘\n’ -- 换行符为'\n'
FROM table t;追问
感谢你的回答,但是还是没有显示到列名啊?
追答列名称可以用这个语句获取:
select column_name from information_schema.columns where table_name='table_name';
用python脚本导出mysql数据库查询结果到Excel表
最近需要导数据的情况太多,总用跳板机上的navicat工具有点效率低,也觉得挺麻烦的(由于跳板机无法连通外网 所以导出数据文件还得通过sftp传到本机)
anyway 还是写个脚本好了。之前写过一个shell脚本做的定时导出任务,现在试试用python写下
主要用到的库有:
pymysql -- 连数据库的无需多说
os & sys -- 可能回涉及到工作目录或者外部传参
xlwt -- 写excel
下面就是代码了,总体还是挺简单的,主要遇到个字符编码的问题,改成utf-8就解决了
还有个没解决掉的问题: select的结果没有字段名,所以....文件第一行的字段我是手动加进去的 =.=
#!/usr/bin/python
# -*- coding: cp936 -*-
# security:数据库相关的敏感参数最好通过传参形式传入而非写入脚本
import pymysql
import xlwt
import os,sys
def dbConnect(dburl):
db_user = sys.argv[1]
db_pass = sys.argv[2]
db_name = raw_input("要使用的数据库:")
db_conn = pymysql.connect(dburl,db_user, db_pass, db_name)# db_name传参失败?编码问题"?"
return db_conn
def sqlOpt(opt):
db_conn = dbConnect("localhost")
cur = db.cursor()
cur.execute(opt)
data = cur.fetchall()
db_conn.close()
return data
def write_to_excel(content):
os.chdir("/home/appuser/export_mysql_data/")
filename = raw_input("请输入要保存的文件名,无需后缀:") + ‘.xls‘
wbk = xlwt.Workbook(encoding=‘utf-8‘)
test = wbk.add_sheet(‘test‘,cell_overwrite_ok=True)
# ?如何获取列名
fileds = [u‘ID‘,u‘name‘,u‘sex‘,u‘birth‘,u‘department‘,u‘address‘]
trans_data = list(content)
# 写入列名
for filed in range(0,len(fileds)):
test.write(0,filed,fileds[filed])
for row in range(1,len(trans_data)+1):
for col in range(0,len(fileds)):
test.write(row,col,str(trans_data[row-1][col]))
wbk.save(filename)
def run_Task():
sql = raw_input("请输入sql查询语句:")
result = sqlOpt(sql)
write_to_excel(result)
run_Task()
以上是关于利用mysql,用命令行将表导出到excel,带列名!!!的主要内容,如果未能解决你的问题,请参考以下文章
在 Pandas 中连接 Excel 文件表,以 CSV 格式每 1 行将大型 Pandas 数据框导出到新的 Excel 文件。自动化?