使用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
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
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
6.后记
篇幅所限,本文展示的建表语句只有几条,真正的实际环境中可能一张表的建表语句有几十行,用shell脚本直接去生成代码要方便的多,而且几乎不会出错,极大地提高了写码效率!
1 0
- 使用shell脚本生成*Db.java、*.thrift或*.yaml文件语句
- 使用sed、awk命令生成.java或.yaml文件所需语句
- shell脚本生成xml文件
- 使用bat命令或shell脚本调用java程序
- Java读取Yaml文件
- java 读写 yaml 文件
- shell脚本中生成的spool文件没有执行的语句
- Java执行shell脚本文件
- shell脚本自动生成C文件模板
- 在Shell脚本中调用sql语句或存储过程
- 使用 python 读取 yaml 文件
- go语言使用.yaml文件
- 使用node解析yaml文件
- 如何使用Shell脚本编译生成Archive文件并导出签名IPA文件。
- 如何使用Shell脚本编译生成Archive文件并导出签名IPA文件。
- Linux下使用Shell脚本向FTP服务器上传或下载一个文件
- win下使用thrift生成gen-php文件代码
- 一个通过java的接口生成thrift文件的工具
- XSS脚本攻击防御(Antisamy)(上)
- android开发之matchParent解决layout兼容问题,layout 布局
- 彻底解决Git中文乱码问题
- cmake的INCLUDE_DIRECTORIES命令不起作用
- 单例模式
- 使用shell脚本生成*Db.java、*.thrift或*.yaml文件语句
- Tools介绍:最快的DicomViewer软件 - RadiAnt Dicom Viewer
- 2016书单总结--Java并发编程实战--安全性-活跃性示例
- C# delegate event
- ACM篇:FZU 2150 -- Fire Game
- 记一次搬迁到 OpenShift 并搭建 PHP5.5 环境等
- 你极力推荐的 Chrome 扩展有哪些?
- Error: java.lang.RuntimeException: Some file crunching failed, see logs for details
- Jquery实现拖拽可编辑模块