一些源数据作为csv文件存放在服务器上,因之前使用的数据库是oracle和postgresql,大小写不敏感,因此csv文件的首行存放的是大写的字段名。现在数据库扩展使用大小写敏感的clickhouse,因此在入库前需要对csv文件的首行进行大小写转换。
思路:文件过大,文件在windows下打不开。所以需要用命令来修改:
1、展示csv文件首行并转换为小写
2、将小写的行插入在原csv文件的第二行
3、删除大写的首行
过程:演示用的test0.csv首行有三个字段,分别为AAA、BB_B、C(这是我随便起的)。将这个文件放在服务器上,我的存放路径为/root/myData/test0.csv
1、展示csv文件首行并转换为小写
head -1 test0.csv | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'
2、将第一步回显的小写的行插入在原csv文件的第二行(用java来说就是把aaa,bb_b,c作为入参传入sed方法中)
sed -i '1 a aaa,bb_b,c' test0.csv
这里可以看出,小写的表头已经插入到第二行了
3、删除大写的首行
sed -i '1d' test0.csv
完成~
总结:分三个命令来实现linux 超大csv文件首行大小写转换,我这里使用的主要是sed命令,如果有更简洁的方法欢迎讨论~