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

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_id
varchar user_name
varchar first_name_str
varchar last_name_str
varchar gender
varchar password
tinyint 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 userId
varchar userName
varchar firstNameStr
varchar lastNameStr
varchar gender
varchar password
tinyint 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 : userId
user_name : userName
first_name_str : firstNameStr
last_name_str : lastNameStr
gender : gender
password : password
status : status

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值