使用shell脚本生成*Db.java、*.thrift或*.yaml文件语句

来源:互联网 发布:爱淘宝红包 编辑:程序博客网 时间:2024/06/05 15:07

      • 前言
      • sql建表语句文件createTablesql
      • sqlToDbsh将createTablesql转换为Dbjava所需语句
      • sqlToThriftsh将createTablesql转换为thrift所需语句
      • sqlToYamlsh将createTablesql转换为yaml所需语句
      • 后记

1.前言

照着数据库里的建表语句一个个去写对数据表的操作的java语句时是很烦的,而且很容易出错,为什么不用新的的方法来实现这些功能呢。于是就想到了用shell语句来完成这些任务,效果见下面部分。前面博客文章介绍了使用shell命令生成Db.java、.thrift或*.yaml文件所需语句,但使用起来并不是那么顺手,还需一条条执行,很繁琐,于是想直接将上述命令生成一个shell脚本,执行时只需传入一个sql建表语句的文件即可,大大减少了工作量。

2.sql建表语句文件createTable.sql

`user_id` int(11) NOT NULL AUTO_INCREMENT, `user_name_chinese` varchar(255) DEFAULT NULL, `user_name_pinyin` varchar(255) DEFAULT NULL, `first_name_str` varchar(50) DEFAULT NULL, `last_name_str` varchar(50) DEFAULT NULL, `gender` varchar(10) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `status` tinyint(10) DEFAULT NULL, 

3.sqlToDb.sh,将createTable.sql转换为*Db.java所需语句

#!/bin/zsh#将sql建表语句转换为对应的Db.java##使用方法#./sqlToDb.sh fileName##提取类型和字段awk -F'[` (]' '{print $6" "$4}' "$1" > temp#转换为首字母大写awk -F'_'  '{printf $1;for(i=2;i<=NF;i++)printf toupper(substr($i,0,1))substr($i,2);printf "\n"}' temp > temp1#替换sql的数据类型为java的数据类型sed 's/varchar/String/g' temp1 | sed 's/tinyint/int/g' | sed 's/bigint/long/g' > temp#生成最终的DB.java语句awk '{printf "private " $1 " " $2 ";\n"}' temp#删除临时文件rm -f temp temp1

sqlToDb.sh

4.sqlToThrift.sh,将createTable.sql转换为*.thrift所需语句

#!/bin/zsh#将sql建表语句转换为对应的*.thrift文件##使用方法#./sqlToThrift.sh fileName##提取类型和字段awk -F'[` (]' '{print $6" "$4}' "$1" > temp#转换为首字母大写awk -F'_'  '{printf $1;for(i=2;i<=NF;i++)printf toupper(substr($i,0,1))substr($i,2);printf "\n"}' temp > temp1#替换sql的数据类型为thrift的数据类型sed 's/varchar/string/g' temp1 | sed 's/tinyint/byte/g' | sed 's/smallint/i16/g' | sed 's/bigint/i64/g' | sed 's/int/i32/g' > temp#生成最终的.thrift语句awk '{printf NR ":" $1 " " $2 ";\n"}' temp#删除临时文件rm -f temp temp1

sqlToThrift.sh

5.sqlToYaml.sh,将createTable.sql转换为*.yaml所需语句

#!/bin/zsh#将sql建表语句转换为对应的*.yaml文件##使用方法#./sqlToYaml.sh fileName##提取第一部分字段awk -F'[` (]' '{print $4" "}' "$1" > part1#提取第二部分并转换为驼峰命名awk -F'_'  '{printf " " $1;for(i=2;i<=NF;i++)printf toupper(substr($i,0,1))substr($i,2);printf "\n"}' part1 > part2#合并part1 part2为最终的语句paste -d':' part1 part2#删除临时文件rm -f part1 part2

sqlToYaml.sh

6.后记

篇幅所限,本文展示的建表语句只有几条,真正的实际环境中可能一张表的建表语句有几十行,用shell脚本直接去生成代码要方便的多,而且几乎不会出错,极大地提高了写码效率!

1 0
原创粉丝点击