使用sed、awk命令生成.java或.yaml文件所需语句

来源:互联网 发布:动态网页制作python 编辑:程序博客网 时间:2024/05/16 16:12

0.引言

照着数据库里的建表语句一个个去写对数据表的操作的java语句时是很烦的,而且很容易出错,为什么不用新的的方法来实现这些功能呢。于是就想到了用shell语句来完成这些任务,效果见下面部分。本次的实现仅仅是使用一条条语句来实现这种功能,下一步是实现用一个shell脚本来自动化实现这些功能。//TODO

1.根据sql建表语句创建*.java文件所需语句;

1.sql语句test.sql

CREATE TABLE IF NOT EXISTS `user_details` (  `user_id` int(11) NOT NULL AUTO_INCREMENT,  `user_name` 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,  PRIMARY KEY (`user_id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10001 ;

2.通过awk命令从sql语句中提取出带类型的字段;

awk -F'[` (]' '{print $6" "$4}' test.sql > testWithType.sql
int user_idvarchar user_namevarchar first_name_strvarchar last_name_strvarchar gendervarchar passwordtinyint status

3.通过awk语句将变量分隔开来并使其后面的单词首字母大写

awk -F'_'  '{printf $1;for(i=2;i<=NF;i++)printf toupper(substr($i,0,1))substr($i,2);printf "\n"}' testWithType.sql > testWithType1.java
int userIdvarchar userNamevarchar firstNameStrvarchar lastNameStrvarchar gendervarchar passwordtinyint status

4.通过sed命令将上述类型和变量替换为java中的语句;

sed 's/varchar/String/g' testWithType1.java | sed 's/tinyint/int/g' | awk '{printf "private " $1 " " $2 ";\n"}'
private int userId;private String userName;private String firstNameStr;private String lastNameStr;private String gender;private String password;private int status;

2.根据sql语句提取的字段和转换的java字段生成yaml文件所需要的语句;

1.sql语句 test.sql

CREATE TABLE IF NOT EXISTS `user_details` (  `user_id` int(11) NOT NULL AUTO_INCREMENT,  `user_name` 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,  PRIMARY KEY (`user_id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10001 ;

 2.提取目标字段

awk -F'[` (]' '{print $4" "}' test.sql > part1
user_id user_name first_name_str last_name_str gender password status 

3.转换为驼峰命名方法,外加用来连接的冒号

awk -F'[` (]' '{print $4}' test.sql |
awk -F'_'  '{printf " " $1;for(i=2;i<=NF;i++)printf toupper(substr($i,0,1))substr($i,2);printf "\n"}' > part2
 userId userName firstNameStr lastNameStr gender password status

4.连接组成.yaml文件的两部分

paste -d':' part1 part2
user_id : userIduser_name : userNamefirst_name_str : firstNameStrlast_name_str : lastNameStrgender : genderpassword : passwordstatus : status

0 0
原创粉丝点击