前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用shell脚本解决Navicat导出excel数据不全的问题

使用shell脚本解决Navicat导出excel数据不全的问题

作者头像
typecodes
发布2024-03-29 15:15:15
1060
发布2024-03-29 15:15:15
举报
文章被收录于专栏:typecodestypecodes

月末需要对系统注册用户进行报表统计,在使用Navicat从MySQL数据库中导出数据到excel文件时,发现最大只能导出为65536(美好的数字)行的数据。按理说 Navicat应该是从数据库中读取一条记录会立即写到excel文件中,不应该只读取65536范围内的数据然后一次性写到文件里面。

1 问题转换

鉴于Navicat的限制,只能想想其它办法了,这里选择使用shell脚本来处理。如下图所示,在Navicat中对select出来的数据右键,然后选择复制为-制表符分隔值(字段名和数据)把select出来的数据粘贴到任意文本文档中。如此就可以通过shell脚本对这个文本文档进行处理,最后输出为excel文件。

使用shell脚本解决Navicat导出excel数据不全的问题
使用shell脚本解决Navicat导出excel数据不全的问题
2 脚本代码

程序比较简单,处理时有两个需要注意的地方。第一,excel会把较大的数字采用科学记数法显示,可以采用在数字前面添加`反引号解决;第二,一般Windows下的编码为gbk,如果Linux环境默认的是utf-8的格式,那么shell最后生成的excel文件中的汉字是乱码的,所以最好通过iconv工具提前把文件转换成gbk格式。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

#!/bin/bash # FileName: navicatxportoverflow1.sh # Description: 使用shell脚本解决Navicat导出excel数据不全的问题 # Simple Usage: sh navicatxportoverflow1.sh file_name.txt # (c) 2018.02.07 vfhky https://typecodes.com/linux/navicatxportoverflow1.html # https://github.com/vfhky/shell-tools/blob/master/filehandle/navicatxportoverflow1.sh dst_file=$1 dst_ile_name=$(basename ${dst_file}) dst_ile_name_prefix=${dst_ile_name%.*} cp ${dst_file} ${dst_ile_name_prefix}.tmp sed -i 's/\t/,/g' ${dst_ile_name_prefix}.tmp awk -F',' '{print $1",`"$2","$3}' ${dst_ile_name_prefix}.tmp > ${dst_ile_name_prefix}.tmp1 iconv -f "utf-8" -t "gbk" ${dst_ile_name_prefix}.tmp1 > ${dst_ile_name_prefix}.csv rm -rf ${dst_ile_name_prefix}.tmp ${dst_ile_name_prefix}.tmp1 exit 0 |

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 问题转换
  • 2 脚本代码
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档