写在前面
有很久都没更新博客了,主要是因为最近回家了有点懒(不为自己找借口)。今天被姐姐拉去当做苦力做事,需要做的事有点小麻烦,处理一张很大的表,将表中的数据按照分类单独导出为一个表。我嫌弃复制太麻烦了就觉得用数据库可以实现,这里说的是将Excel导入MySQL,当然也有导出。
说一下前置条件
时间:2019年7月12日00:10:06
数据库版本:5.7.25-0ubuntu0.18.04.2
- 解释说明一下:我是在Windows下安装了Linux子系统,然后在Ubuntu中安装的数据库。其实这个不影响,只要你安装了工具,能够连接到数据库我想装在哪里都无所谓。
辅助工具:Navicat for MySQL
- 解释说明:Navicat简直是神器,懂的当然懂。然后其实导出有命令,导入我没有尝试过,后面试过了再说。
开始操作
先连接上数据库,然后呢点击导入向导
,可以看到很多的选项,我们选择Excel然后点击下一步。
ZR4Z6A.png 这里我们设计导入的格式,选择字段开始的行,就是你想要这个表呈现的样子,也叫列名还有就是指明你的数据从哪一行开始的,其他的默认,然后下一步 ZR4KTf.png
然后就是下一步下一步下一步,可以看到一个这个图点击开始就好: ZR4YXn.png
等待一下,就OK了。我没遇到过错误(就是这么理直气壮),看一下结果的样子 ZR420x.png ZR4R76.png OK了,现在可以开始使用SQL语句快速的查找统计以及干你想要的事情了。
中间来点小甜点
在帮我姐做事的时候需要我把一些数据单独生成一张表,这里就顺便提一下如何使用SQL命令将查询出来的结果创建一张新的表,我就用我这个了:
CREATE TABLE 队员(SELECT * FROM Sheet1 WHERE 角色="组员" );
解释:
- 其实就是将查询的结果创建新的表,然后呢这里面有中文,你最好保证你的数据库编码风格是支持中文的,然后最好是别用中文。我这里只是示范一下如果确实要用中文怎么办,表名中文是不用加引号的,后面的值当然是要加的。
这样创建的表格式和原来的表结构一样,表头什么都是一样的。
ZR5ngJ.png
现在来导出
用工具导出来
所有的操作都搞完了,你想要的数据单独是一张表了,我们被要求给别人看到是Excel而不是数据库。那我们就将它导出来吧。看到前面那个导入向导
旁边的导出向导
了吗?我们需要的就是那个,点击,选择Excel,然后选择你需要导出的表和选择保存路径然后下一步、再下一步。这个时候如果你是需要表头
的那么你需要勾选上包含列的标题
然后下一步后点击开始(太多图重复,就不放图了,多了看起来不舒服)。等待一下,就完成了。还是那句话我没遇到过错误(就是这么理直气壮)。
命令行来一个
MySQL中导出数据是有命令的,我也试过了。然后如果你没有工具又想导出,那就使用命令行吧。有人这样说过:
命令行是程序员的浪漫 ——我说的
简单介绍一下命令
select * from tablename into outfile "filepath and file extension"
into
和outfile
是关键词,然后双引号里面是文件路径和文件名(包括后缀)。然后你开始执行,会发现不得行,报错了:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
这是为啥呢?是因为MySQL导出文件有限制,除了保存到它规定的文件夹路径下以外都是不被允许的。我们当然不喜欢这个规定,于是我们打算修改它。找到你的mysql的配置文件,叫做my.cnf
的,在其中加上这样一句话:
secure_file_priv=''
然后重启你的MySQL,就可以使用上面的命令将你想要导出的表保存到你想要的位置了。
这样保存出来的表有一个问题,那就是没有表头,这是为什么我还没搞懂,后面有时间研究。
写在后面
我写这个的时候在凌晨,如果有错误的地方欢迎你的指出。
网友评论