使用DateFactory建立一千万条测试数据

在pom.xml中引入依赖

<dependencies>
	  	<dependency>
			 <groupId>org.fluttercode.datafactory</groupId>
			 <artifactId>datafactory</artifactId>
			 <version>0.8</version>
			 <type>jar</type>
		</dependency>
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>11.2.0</version>
		</dependency>
  </dependencies>

DbUtil.java

package cn.testData.util;

import java.sql.Connection;
import java.sql.DriverManager;

public class DbUtil {

	    private String dbUrl="jdbc:oracle:thin:@172.28.28.112:1521:orcl";
	    private String dbUserName="bh";
	    private String dbPassword="bh";
	    private String jdbcName="oracle.jdbc.driver.OracleDriver";
	    
	    /**
	     * 获取数据库连接
	     * @return
	     * @throws Exception
	     */
	    public Connection getCon() throws Exception{
	        Class.forName(jdbcName);
	        Connection con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);
	        return con;
	    }
	    
	    /**
	     * 关闭数据库连接
	     * @param con
	     * @throws Exception
	     */
	    public void closeCon(Connection con) throws Exception{
	        if(con!=null){
	            con.close();
	        }
	    }
	    
	    public static void main(String[] args) {
	        DbUtil dbUtil=new DbUtil();
	        try {
	            dbUtil.getCon();
	            System.out.println("数据库连接成功");
	        } catch (Exception e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	        }
	    }
}

UUIDUtil.java

package cn.testData.util;

import java.util.UUID;

public class UUIDUtils {

	 public static String getUUID(){
	        return UUID.randomUUID().toString().replace("-","");
	 }
}

CommonUtil.java

package cn.testData.util;

import java.util.Random;

public class CommonUtil {

	public static String getName() {
        Random random = new Random();
        String[] Surname = {"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许",
                "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎",
                "鲁", "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳", "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺", "倪", "汤", "滕", "殷",
                "罗", "毕", "郝", "邬", "安", "常", "乐", "于", "时", "傅", "皮", "卞", "齐", "康", "伍", "余", "元", "卜", "顾", "孟", "平", "黄", "和",
                "穆", "萧", "尹", "姚", "邵", "湛", "汪", "祁", "毛", "禹", "狄", "米", "贝", "明", "臧", "计", "伏", "成", "戴", "谈", "宋", "茅", "庞", "熊", "纪", "舒",
                "屈", "项", "祝", "董", "梁", "杜", "阮", "蓝", "闵", "席", "季"};
        String girl = "秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽 ";
        String boy = "伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘";
        int index = random.nextInt(Surname.length - 1);
        String name = Surname[index]; //获得一个随机的姓氏
        int i = random.nextInt(3);//可以根据这个数设置产生的男女比例
        if(i==2){
            int j = random.nextInt(girl.length()-2);
            if (j % 2 == 0) {
                name = name + girl.substring(j, j + 2);
            } else {
                name =  name + girl.substring(j, j + 1);
            }

        }
        else{
            int j = random.nextInt(girl.length()-2);
            if (j % 2 == 0) {
                name =  name + boy.substring(j, j + 2);
            } else {
                name =  name + boy.substring(j, j + 1);
            }

        }

        return name;
    }
	
	 public static int getNum(int start,int end) {
	        return (int)(Math.random()*(end-start+1)+start);
	    }

	
	/**
     * 返回手机号码 
     */
    private static String[] telFirst="134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153".split(",");
    public static String getTel() {
        int index=getNum(0,telFirst.length-1);
        String first=telFirst[index];
        String second=String.valueOf(getNum(1,888)+10000).substring(1);
        String third=String.valueOf(getNum(1,9100)+10000).substring(1);
        return first+second+third;
    }

    public static String getLOAN_PURPOSE(){
    	int [] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,99};
    	//产生0-(arr.length-1)的整数值,也是数组的索引
    	int index=(int)(Math.random()*arr.length);
    	int rand = arr[index];
    	String LOAN_PURPOSE = String.valueOf(rand);
    	return LOAN_PURPOSE;
    }
	
    /**
     * 生成具体位数的随机字母加数字
     * @return
     */
    
    public static String genRandomNum(){
  	  int  maxNum = 36;
  	  int i;
  	  int count = 0;
  	  char[] str = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
  	    'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
  	    'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };	  
  	  StringBuffer pwd = new StringBuffer("");
  	  Random r = new Random();
  	  while(count < 22){
  	   i = Math.abs(r.nextInt(maxNum));   
  	   if (i >= 0 && i < str.length) {
  	    pwd.append(str[i]);
  	    count ++;
  	   }
  	  }
  	  return pwd.toString();
  	}
	
}

表中具体插入字段及sql

package cn.testData;

import java.sql.Connection;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.fluttercode.datafactory.impl.DataFactory;

import cn.testData.util.DbUtil;
import cn.testData.util.CommonUtil;
import cn.testData.util.UUIDUtils;
public class BIcl2 {

	
	public static void main(String[] args) throws Exception {
        DbUtil dbUtil = new DbUtil();
        Connection con = dbUtil.getCon();
        Statement statement = con.createStatement();
        for(int i=0; i<20; i++){
        	SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS",Locale.CHINESE);
        	DataFactory df = new DataFactory();
            String REQ_ID = df.getRandomChars(36);
            String OP_CODE = "A";
            
            // UPLOAD_TS
            Date minDate = df.getDate(1980, 1, 1);
            Date maxDate = df.getDate(2019, 2, 21);
            Date UPLOADTS = df.getDateBetween(minDate, new Date());
            String UPLOAD_TS1 = sdf.format(df.getDateBetween(minDate, new Date()));
            String UPLOAD_TS = "TO_TIMESTAMP('"+UPLOAD_TS1+"', 'YYYY-MM-DD HH24:MI:SS:FF6')";
            System.out.println("UPLOAD_TS:"+UPLOAD_TS);
            
            // name
            String NAME = CommonUtil.getName();
            
            // pid
            String P_ID = df.getNumberText(18);
            
            // 循环授信账户编号
            String CREDIT_ACCNT_ID = CommonUtil.genRandomNum();
            System.out.println(CREDIT_ACCNT_ID);
            
            // 借据编号
            String BILLING_ID = CommonUtil.genRandomNum();
            
            
            
            // termNo
            int termNo = df.getNumberUpTo(99999);
            
            // TERM_STATUS
            String TERM_STATUS = "1";
            
            // TARGET_REPAYMENT_DATE
            String TARGET_REPAYMENT_DATE1 = sdf.format(df.getDateBetween(minDate, maxDate));
            String TARGET_REPAYMENT_DATE = "TO_TIMESTAMP('"+TARGET_REPAYMENT_DATE1+"', 'YYYY-MM-DD HH24:MI:SS:FF6')";
            
            // REAL_REPAYMENT_DATE
            String REAL_REPAYMENT_DATE1 = sdf.format(df.getDateBetween(minDate, maxDate));
            String REAL_REPAYMENT_DATE = "TO_TIMESTAMP('"+REAL_REPAYMENT_DATE1+"', 'YYYY-MM-DD HH24:MI:SS:FF6')";
            
            // PLANNED_PAYMENT
            int PLANNED_PAYMENT1 = df.getNumberUpTo(2000000);
            Double PLANNED_PAYMENT = Double.valueOf(PLANNED_PAYMENT1);
            
            // TARGET_REPAYMENT
            int TARGET_REPAYMENT1 = df.getNumberUpTo(2000000);
            Double TARGET_REPAYMENT = Double.valueOf(TARGET_REPAYMENT1);
            
            // REAL_REPAYMENT
            int REAL_REPAYMENT1 = df.getNumberUpTo(2000000);
            Double REAL_REPAYMENT = Double.valueOf(REAL_REPAYMENT1);
            
            // OVERDUE_STATUS    0
            
            // STATUS_CONFIRM_AT
            String STATUS_CONFIRM_AT1 = sdf.format(df.getDateBetween(minDate, maxDate));
            String STATUS_CONFIRM_AT = "TO_TIMESTAMP('"+STATUS_CONFIRM_AT1+"', 'YYYY-MM-DD HH24:MI:SS:FF6')";
            
            // OVERDUE_AMOUNT 		0
            
            // CREDIT_USAGE
            int CREDIT_USAGE1 = df.getNumberUpTo(2000000);
            Double CREDIT_USAGE = Double.valueOf(CREDIT_USAGE1);
            
            // BILLING_STATUS
            int BILLING_STATUS1 = df.getNumberBetween(1, 4);
            String BILLING_STATUS = "" + BILLING_STATUS1;
            
            // DEPT_CODE
            String DEPT_CODE = "dept_code";
            
            String sql = "INSERT INTO BICL2 VALUES('"+UUIDUtils.getUUID()+"', 'A', "+UPLOAD_TS+", '"+NAME+"','"+P_ID+"','"+CREDIT_ACCNT_ID+"','"+BILLING_ID+"',"+termNo+",'"+TERM_STATUS+"',"+TARGET_REPAYMENT_DATE+","+REAL_REPAYMENT_DATE+","+PLANNED_PAYMENT+","+TARGET_REPAYMENT+","+REAL_REPAYMENT+",'',"+STATUS_CONFIRM_AT+",'',"+CREDIT_USAGE+",'"+BILLING_STATUS+"','"+DEPT_CODE+"')";
            System.out.println(sql);
            statement.execute(sql);		
        }
        con.close();
    }
	
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值