当前位置:   article > 正文

mysql篇 — 导出mysql数据为excel格式显示乱码_mysql 导出的sql文件编码是utf-16le

mysql 导出的sql文件编码是utf-16le

 

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

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

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

 

mysql导出数据

在mysql命令行的操作

起别名执行以下语句

  1. 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';
  2. Query OK, 24 rows affected (0.04 sec)

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

如下:在界面显示的信息

  1. 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;
  2. +-------------------------+-----------------+--------------+-----------+---------------------+---------------------+
  3. | 数据表 | 数据表中文 | 数据容量 | 数据量 | 数据创建 | 数据更新 |
  4. +-------------------------+-----------------+--------------+-----------+---------------------+---------------------+
  5. | sequence | | 16KB | 0 | 2020-05-07 10:04:00 | NULL |
  6. | person_tbl01 | | 16KB | 0 | 2020-05-07 10:37:00 | NULL |
  7. | apps | | 16KB | 3 | 2020-04-30 20:42:52 | NULL |
  8. | xiaohua | | 16KB | 0 | 2020-04-30 20:51:07 | NULL |
  9. | runoob_tbl | | 16KB | 5 | 2020-04-30 00:39:27 | NULL |
  10. | xiaoxvx | | 16KB | 0 | 2020-04-30 21:08:36 | NULL |
  11. | insect0 | | 16KB | 0 | 2020-05-07 09:58:37 | NULL |
  12. | ss | | 16KB | 0 | 2020-04-30 01:07:48 | NULL |
  13. | person_tbl011 | | 16KB | 0 | 2020-05-07 10:37:32 | NULL |
  14. | clone_tbl | | 16KB | 5 | 2020-05-06 17:55:16 | NULL |
  15. | runoob_test_tbl | | 16KB | 4 | 2020-04-30 01:08:59 | NULL |
  16. | xiaoxx | | 16KB | 0 | 2020-04-30 21:35:06 | NULL |
  17. | person_tbl | | 16KB | 1 | 2020-05-07 11:41:21 | NULL |
  18. | tcount_tbl | | 16KB | 3 | 2020-04-30 00:39:27 | NULL |
  19. | person_tbl09 | | 16KB | 0 | 2020-05-07 10:29:01 | NULL |
  20. | xiaox | | 16KB | 0 | 2020-04-30 21:07:18 | NULL |
  21. | employee_tbl | | 16KB | 6 | 2020-04-30 00:11:48 | NULL |
  22. | runoob_transaction_test | | 16KB | 2 | 2020-04-30 14:20:35 | NULL |
  23. | person_tbl0 | | 16KB | 0 | 2020-05-07 10:28:15 | NULL |
  24. | websites | | 16KB | 6 | 2020-04-29 23:17:10 | NULL |
  25. | qiu_tbl2 | | 16KB | 6 | 2020-04-29 21:48:19 | NULL |
  26. | xiaoxiao | | 16KB | 0 | 2020-04-30 21:02:04 | NULL |
  27. | insect | | 16KB | 3 | 2020-05-07 09:59:13 | NULL |
  28. | alter_tbl | | 0KB | 0 | 2020-04-30 14:58:11 | 2020-04-30 14:58:11 |
  29. +-------------------------+-----------------+--------------+-----------+---------------------+---------------------+
  30. 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命令行,使用该命令导出的数据

  1. 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';
  2. Query OK, 24 rows affected (0.04 sec)

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

 

在shell命令行的操作

  1. 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
  2. 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命令行转换编码

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

提示:以下表示失败

iconv: illegal input sequence at position 0

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

 

补充1

iconv命令

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

 

补充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扩展的问题

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/458365
推荐阅读
相关标签
  

闽ICP备14008679号