MySQL中重看结果使用命令_MySQL查询结果导出方式总结

说明:如下示例中使用的MySQL版本为MySQL8.0.13,Python版本为Python3.6.4,数据库第三方客户端Navicat Premium版本为 12.0.18html

方法一:利用select ······ into outfile语句

首先登录MySQL,而后查看系统变量secure_file_priv的值,以下所示:python

21c1f07e79f632cc9a4621a6ab3ad6f5.png

默认状况下,secure_file_priv的值为NULL,此时若是利用select ······ into outfile语句将查询结果导出,会由于权限问题而报错,要想解决这个问题能够在MySQL的配置文件my.ini中添加语句secure_file_priv = 'some directory',some directory指的是SQL语句查询结果要保存的位置。此处,笔者已在配置文件my.ini中添加了语句secure_file_priv = E:\MySQL Exported Results。mysql

以.xls文件形式导出查询结果,SQL语句以下:sql

b75f06af2be5a1a8e4972347dabb454f.png

导出结果以下图所示:数据库

4954daa299dba2d28193948bf42b2970.png

利用这种方式导出的查询结果不包括列名,能够根据数据库中的原始数据手工给各列添上对应的列名。api

以csv文件形式导出查询结果,SQL语句以下:数据结构

824fe09bc29c74bf77837f8baf74812f.png

导出结果以下图所示:工具

50b49f59618b64942638c1f27d1858ab.png

从上图能够看到导出结果所有都放入了同一列中,想要对导出的数据作进一步还要进行手工分列,比较麻烦。若有哪位朋友知晓用这种方式如何将查询结果以csv文件形式导出且分列正确,还请不吝赐教。fetch

方法二:利用重定向命令

将查询结果以txt文件形式导出,SQL语句以下(默认已为mysql添加了环境变量):编码

9705d29834cde9363d2b517988745da5.png

最终导出结果以下:

b180f20e045c0b8a234ad765500ebf4d.png

从上图能够看到,这种导出方式获得的导出结果分列正确,且带有列名。

方法三:利用第三方客户端工具Navicat Premium

以将查询结果导出为csv文件为例,具体步骤以下:

1)打开navicat premium(默认已经创建好MySQL数据库链接),选中相应的数据库,而后创建新的查询。

6150acebb80c83082d1412da3bddca06.png

2)先点击右上角的运行按钮,而后点击导出结果图标,出现以下图所示对话窗口,在导出格式选项中选择CSV文件。

3189d8474cffdd6b9b56e6cdc10e9d5a.png

3)点击右下角的下一步后,跳出以下窗口。

0b07d8712350286a6ab6ecfd44f027f1.png

4)设置导出文件的保存位置及文件名称。

48c1a4b05ab0561c07c57c0727045866.png

5)点击上图中右下角的高级选项,设置csv文件的字符集编码方式为GB2312(默认是UTF-8)。

fe4cbcd3e7461e952477d2b135b26889.png

7d65eae106f8a330f50a0e9d64f5d17a.png

6)设置好字符集编码方式后,先点击肯定按钮,再点击右下角的下一步,跳出以下窗口。

70f2dc94a10b1ad3661c2a3346c95586.png

7)在上图中,勾选包含列的标题,并将日期排序更改成咱们熟悉的YMD(即年月日)格式,其余保持默认值便可。而后点击右下角的下一步,跳出以下窗口。

5e5874dcc97760a5e540db07a955a602.png

8)在上述窗口中点击右下角的开始,即开始导出查询结果。

95d279a71e1bc5a395321b84d57380da.png

如上图所示,则代表查询结果已成功导出。

最终的导出结果以下图所示:

92323f7e37f986ab965917eb6ed60b84.png

从上图能够看到,这种方式导出的查询结果能够包含查询结果各列对应的列名,且有着正确的分列。上述步骤说的是将查询结果导出为csv文件,若想将查询结果导出为.xls或者.xlsx文件,步骤与上述相似,且不用更改导出文件的字符集编码方式,使用默认的UTF-8便可。

方法四:利用Python与MySQL的交互

import pandas as pd

import pymysql

# 定义一个用于与MySQL数据库交互的上下文管理器:

class DataBase(object):

def __init__(self,name,password):

# 建立数据库链接

self.conn = pymysql.connect('localhost','root',str(password),str(name),charset='utf8mb4')

# 建立cursor对象

self.cursor = self.conn.cursor()

def __enter__(self):

return self.cursor # 返回cursor对象,且这个cursor对象会被赋给with语句中as后面的变量

def __exit__(self,exc_type,exc_value,traceback):

self.cursor.close() # 关闭游标对象

self.conn.close() # 断开数据库链接

def main():

with DataBase('sql50',883721) as db:

db.execute("select * from student where sgender='男'") # 执行sql语句

content = db.fetchall() # 获取数据(db中保存着查询结果集)

df = pd.DataFrame(list(content)) # 将从数据库中查询出的数据放入DataFrame对象中

return df

if __name__ == '__main__':

df = main()

new_cols = ['sid','sname','sbirth','sgender']

df.columns = new_cols

df.head()

查询结果df的数据结构以下图所示:

5a9a7b8b137a6a581fdeadc80b2201db.png

# 将查询结果df写入csv文件:

df.to_csv('E:/student.csv',sep=',',index=False,encoding='gbk')

导出的csv文件student中的数据以下所示:

e5ed081c8f8915f9aa092550a987a0d3.png

利用这种方式将SQL语句的查询结果导出时,也须要根据数据库中的原始数据给导出数据中的各列添加对应的列名。

相似的,若是想以.xlsx文件的形式导出SQL语句的查询结果,能够调用DataFrame的to_excel方法,此处再也不赘述。

参考:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值