mysql篇

您所在的位置:网站首页 mysql命令行导出表 mysql篇

mysql篇

#mysql篇 | 来源: 网络整理| 查看: 265

 

查看导出文件的编码为fileencoding=utf-16le   【方法参考补充1】

linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题。

【我的操作系统win7,win版的mysql5.7.29】想来linux下比较好处理这类问题吧

 

mysql导出数据

在mysql命令行的操作

起别名执行以下语句

mysql> select table_name as '数据表', TABLE_COMMENT as '数据表中文',concat(truncate(data_length/1024, 0),'KB') as '数据容量', table_rows as '数据量',create_time as '数据创建', update_time as '数据更新' from information_schema.tables where table_schema = 'qiu' group by table_name order by data_length desc into outfile 'F:/qiu.txt'; Query OK, 24 rows affected (0.04 sec)

缺陷:命令行中的as ‘*’,字段并不会导入 导出的数据表中

如下:在界面显示的信息

mysql> select table_name as '数据表', TABLE_COMMENT as '数据表中文', concat(truncate(data_length/1024, 0),'KB') as '数据容量', table_rows as '数据量',create_time as '数据创建', update_time as '数据更新' from information_schema.tables where table_schema = 'qiu' group by table_name order by data_length desc; +-------------------------+-----------------+--------------+-----------+---------------------+---------------------+ | 数据表 | 数据表中文 | 数据容量 | 数据量 | 数据创建 | 数据更新 | +-------------------------+-----------------+--------------+-----------+---------------------+---------------------+ | sequence | | 16KB | 0 | 2020-05-07 10:04:00 | NULL | | person_tbl01 | | 16KB | 0 | 2020-05-07 10:37:00 | NULL | | apps | | 16KB | 3 | 2020-04-30 20:42:52 | NULL | | xiaohua | | 16KB | 0 | 2020-04-30 20:51:07 | NULL | | runoob_tbl | | 16KB | 5 | 2020-04-30 00:39:27 | NULL | | xiaoxvx | | 16KB | 0 | 2020-04-30 21:08:36 | NULL | | insect0 | | 16KB | 0 | 2020-05-07 09:58:37 | NULL | | ss | | 16KB | 0 | 2020-04-30 01:07:48 | NULL | | person_tbl011 | | 16KB | 0 | 2020-05-07 10:37:32 | NULL | | clone_tbl | | 16KB | 5 | 2020-05-06 17:55:16 | NULL | | runoob_test_tbl | | 16KB | 4 | 2020-04-30 01:08:59 | NULL | | xiaoxx | | 16KB | 0 | 2020-04-30 21:35:06 | NULL | | person_tbl | | 16KB | 1 | 2020-05-07 11:41:21 | NULL | | tcount_tbl | | 16KB | 3 | 2020-04-30 00:39:27 | NULL | | person_tbl09 | | 16KB | 0 | 2020-05-07 10:29:01 | NULL | | xiaox | | 16KB | 0 | 2020-04-30 21:07:18 | NULL | | employee_tbl | | 16KB | 6 | 2020-04-30 00:11:48 | NULL | | runoob_transaction_test | | 16KB | 2 | 2020-04-30 14:20:35 | NULL | | person_tbl0 | | 16KB | 0 | 2020-05-07 10:28:15 | NULL | | websites | | 16KB | 6 | 2020-04-29 23:17:10 | NULL | | qiu_tbl2 | | 16KB | 6 | 2020-04-29 21:48:19 | NULL | | xiaoxiao | | 16KB | 0 | 2020-04-30 21:02:04 | NULL | | insect | | 16KB | 3 | 2020-05-07 09:59:13 | NULL | | alter_tbl | | 0KB | 0 | 2020-04-30 14:58:11 | 2020-04-30 14:58:11 | +-------------------------+-----------------+--------------+-----------+---------------------+---------------------+ 24 rows in set (0.05 sec)

导出的数据如下:中文乱码(起的中文别名乱码)

 

不起别名执行以下语句 echo "select table_name,TABLE_COMMENT,concat(truncate(data_length/1024,0),'KB'),table_rows,create_time,update_time from information_schema.tables where table_schema = 'qiu' group by table_name order by data_length desc;"|mysql -uroot -p >F:/00.xls

导出的数据如下

 

在mysql命令行,使用该命令导出的数据 mysql> select table_name as '数据表', TABLE_COMMENT as '数据表中文', concat(truncate(data_length/1024, 0),'KB') as '数据容量', table_rows as '数据量',create_time as '数据创建', update_time as '数据更新' from information_schema.tables where table_schema = 'qiu' group by table_name order by data_length desc into outfile 'F:/qiu.txt'; Query OK, 24 rows affected (0.04 sec)

如下图:没有中文一行,需要手动添加

 

在shell命令行的操作

PS C:\Users\Administrator> echo "select table_name as '数据表', TABLE_COMMENT as '数据表中文', concat(truncate(data_length/1024, 0),'KB') as '数据容量', table_rows as '数据量',create_time as '数据创建', update_time as '数据更新' from information_schema.tables where table_schema = 'qiu' group by table_name order by data_length desc;" |mysql -uroot -p >F:/qiu000.xls Enter password: ******

缺陷:如图,中文显示乱码

解决办法:手动添加中文

  后来发现是win下powershell终端输入中文显示乱码 echo "select table_name as '数据表', TABLE_COMMENT as '数据表中文', concat(truncate(data_length/1024, 0),'KB') as '数据容量', table_rows as '数据量',create_time as '数据创建', update_time as '数据更新' from information_schema.tables where table_schema = 'qiu' group by table_name order by data_length desc;" |mysql -uroot -p123123

 

查看终端编码

解决方法:

其实嘛一看就知道是encoding的问题,英语为默认语言的环境里,PowerShell默认的Encoding是AscII

最简单的方法就是改用PowerShell ISE,它可以显示非英语字符。在操作SharePoint数据的时候只要在启动ISE的时候运行一下下面的语句就可以,相比于Management Console方便很多。添加Sharepoint管理单元

Add-PSSnapin Microsoft.SharePoint.PowerShell

另外一个解决方法是把Encoding改为UTF8,运行下面的语句就可以了。

$OutputEncoding = New-Object -typename System.Text.UTF8Encoding

 

但是,我在powershell ISE执行以下命令报错

Add-PSSnapin : 没有为 Windows PowerShell 版本 2 注册管理单元。

此处参考了:启动Powershell控制台的方式有何不同?依旧没有能解决我的问题,我分别用32位和64位启动powershell ISE和powershell都是报以上一样的错误,找遍了整个百度依旧没有能找到解决办法o(╥﹏╥)o;

 

虽然如此,此时有俩种折中的办法【此为博主猜想中的俩种方向】:

一、

在本地的虚拟机中启动你的linux操作系统的服务器,用xshell连接你的linux服务器,在xshell端导出本地数据,即可解决此问题,【前提的你的linux服务器需要有mysql数据库】

二、

在数据库里执行导出命令,进过测试可以显示中文,但是有一个难点:导出的数据不会带中文那一行

方法:在shell命令行转换编码

$ sudo iconv -futf-16le -tgb2312 -oqiu0.xls qiu.xls iconv -futf-16le -tutf8 -oqiu0.xls qiu.xls

提示:以下表示失败

iconv: illegal input sequence at position 0

使用以上此方法也没能解决我的问题o(╥﹏╥)o

 

补充1:

iconv命令

用法: iconv [OPTION...] [FILE...] 将给定文件的编码从一种编码转换为另一种编码。 输入/输出格式规范: -f, --from-code=NAME 原文编码 -t, --to-code=NAME 输出编码 信息 -l, --list 列出所有已知的编码字符集 输出控制: -c 从输出中省略无效字符 -o, --output=FILE 输出文件 -s, --silent 抑制警告 --verbose 打印进度信息 -?, --help 提供此帮助列表 --usage 发出简短的使用信息 -V, --version 打印程序版本 长选项的强制或可选参数也是强制或可选的任何相应的空头期权。 有关错误报告说明,请参阅: .

 

补充2:

查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式。

如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在 ~/.vimrc 文件中添加以下内容:

set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。

使用以上方法依旧没有能解决我的问题o(╥﹏╥)o

 

使用第三方工具:Navicat for MySQL

在查询编辑器中运行查询语句,直接导出为excel格式【亲测,大力推荐】

 

 

参考:

enca命令下载地址

enca进行字符集转码

powershell解决中文乱码

linux下查看文件编码及修改编码 

Mysql查询结果导出为Excel的几种方法

 

添加powershell扩展模块可能存在的解决办法:

无法在Powershell 2.0命令行中为SQL Server Cmdlet添加一个管理单元

在SQLPS之外使用SQL Server 2008 R2 PowerShell扩展的问题



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3