大文件分割并将字段定长输出

场景:接到需求,需要将一个五千万的表数据导出上传;

要求:文件大小小于2G,每个文件需增加行号,文件中的每个字段长度与接口规范保持一致;

操作:

第一步:将表中数据导出生成文件di_tmp.20200229;根据每行文件的总长度,每个文件大小小于2G,计算每个文件的记录数为80万

第二步:分割文件,80万记录为一个文件,通过split命令对文件按行数进行分割

split -l 800000 di_tmp.20200229 new_di_tmp.20200229

分割后有多个文件,新文件的命名方式为:new_di_tmp.20200229a(a~z)

第三步:对分割后的文件进行定长转换,通过awk对文件进行定长转换

cat new_di_tmp.20200229aa |awk -F"\t" '{printf ("%-8s%-1s%-15s%-15s%-17s%-4s\n",FNR,$1,$2,$3,$4,$5)}'

这里需要注意:awk命令后跟的分割符"\t",需要和数据库导出数据的分割符一致,这里都是用的tab符;通过FNR增加行号

操作结束,文件压缩传输。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • awk介绍awk变量printf命令:实现格式化输出操作符awk patternawk actionawk数组aw...
    哈喽别样阅读 1,594评论 0 4
  • 本章主要学习内容awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 a...
    楠人帮阅读 1,292评论 0 8
  • 1、Nginx日志分析日志格式:'$remote_addr - $remote_user [$time_local...
    运维前线阅读 752评论 0 4
  • 原文:http://521cto.blog.51cto.com/950229/945683 利用awk自身变量NR...
    ibadplum阅读 1,839评论 0 2
  • Linux指令中文说明传送入口 整理自Linux指令中文说明 文本和数据进行处理的编程语言awk 是一种编程语言,...
    释闲人阅读 2,161评论 1 6