在日常数据开发过程中,会经常需要根据数据模型写建表语句,或者在表数据探索时写查询语句,每次写建表语句都会用几分钟的时间,于是打算做个excel模板,把表字段、表分区、表名写在里面,通过程序自动生成建表语句、查询语句。
我的上传资源有打包好的程序,如果嫌麻烦可以直接下载使用。链接:https://download.csdn.net/download/tanhaidi/12058208
下面说一下具体步骤:
(1)定制excel模板
A到C列是字段名,D到F列是分区列,H1是表英文名,H2是表中文名。
文档另存为Excel97-2003工作簿,因为java中使用了jx.jar包,对excel版本有限制。
(2)编写生成语句脚本,java版本1.7
附上代码:
package cn.com.tanhaidi;
import java.io.File;
import java.io.PrintWriter;
import jxl.Sheet;
import jxl.Workbook;
public class CreateHiveTableDemo {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// File file = new File("D:\\javaworkspace\\project1\\src\\abcd.xls");
File file = new File("./建表语句模板.xls");
Workbook wb = Workbook.getWorkbook(file);
Sheet sheet = wb.getSheet(0);
String createstr = createstatement(sheet) ;
String selectstr = selectstatement(sheet) ;
String result = createstr + selectstr ;
System.out.println(result);
// PrintWriter writer = new PrintWriter("D:\\javaworkspace\\project1\\src\\result.txt") ;
// PrintWriter writer = new PrintWriter(new File("/javaworkspace/result.txt").getAbsolutePath()) ;
PrintWriter writer = new PrintWriter("./result.sql") ;
writer.write(result);
writer.close();
// System.out.println(new File("a").getAbsolutePath().toString());
}
// 生成建表语句的方法
public static String createstatement(Sheet sheet){
StringBuffer bodysb = new StringBuffer(); // 建表语句的表头
StringBuffer fldsb = new StringBuffer(); // 字段部分
StringBuffer commentsb = new StringBuffer(); // 表中文名
StringBuffer partitionsb = new StringBuffer(); // 分区字段部分
bodysb.append("建表语句: \r\n\r\ncreate table ");
partitionsb.append("partitioned by (\r\n") ;
bodysb.append(sheet.getCell(7, 0).getContents());
// 表头部分
bodysb.append(" (\r\n");
// System.out.println(bodysb);
// 表中文名
commentsb.append("\r\ncomment '"