`

向s_emp批量插入10000条数据随机产生的数据

    博客分类:
  • JDBC
阅读更多
引用

向s_emp批量插入10000条数据随机产生的数据
每200条一批
// 如果执行一批时出现异常,捕获,并继续下一批
id  [1, 9999999]
first_name 3-16个随机字符
last_name 3-16个随机字符
salary 2000-15000随机数字
package com.test.demo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Random;

import com.tarena.util.DBUtil;

public class InsertRandom {
	static int times;
	static void insertRan() throws Exception {
		Connection con = DBUtil.openInThread();
		PreparedStatement ps = null;
		String sql = "insert into s_emp(id,first_name,last_name,salary) value(?,?,?,?)";
		ps = con.prepareStatement(sql);//注意别放到循环里面去,否则这会每200次执行一条语句
		try{
			while (times <= 10000) {
				ps.setInt(1, randomInt());
				ps.setString(2, randomString());
				ps.setString(3, randomString());
				ps.setDouble(4, randomDouble());
				ps.addBatch();//将该sql语句添加到批处理列表中
				if (times % 200 == 0) {					
						ps.executeBatch();//执行批处理列表中的所有命令
						System.out.println(times+ "条插入成功!!");
				}
				times++;
				}
		}finally{
			ps.close();
			DBUtil.closeInThread();
		}
	}
	static Random ran = new Random();
	private static double randomDouble() {
		return ran.nextInt(13000) + 2000;	
	}
	private static String randomString() {
		StringBuffer str = new StringBuffer();
		for (int a = 0; a <= ran.nextInt(14) + 3; a++) {
			char c = (char) ('a' + ran.nextInt(26));
			str.append(c);
		}
		String s = str.toString();
		return s;
	}
	
	static int i = 0;//静态方法中使用类变量才能使变量值使之共享
	private static int randomInt() {
		//int i = ran.nextInt(999999999) + 1;//随机范围尽可能大些,因为有可能有重复的ID,会引发异常
		return i++;
	}
	public static void main(String[] args) throws Exception {
		insertRan();
	}

}


DBUtil类
package com.tarena.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DBUtil {

	private static final String URL;
	private static final String USERNAME;
	private static final String PASSWORD;
	private static final String DRIVER;

	private static ThreadLocal threadLocal = new ThreadLocal();
	
	static {
		InputStream in = DBUtil.class.getResourceAsStream("/db.properties");
		Properties prpe = new Properties();
		try {
			prpe.load(in);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		URL = prpe.getProperty("url");
		DRIVER = prpe.getProperty("driver");
		USERNAME = prpe.getProperty("username");
		PASSWORD = prpe.getProperty("password");
		// 注册驱动,创建OracleDriver实例;并注册到DriverManager;
		try {
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	// 开启数据库连接;
	public static Connection open() throws Exception {
		// 得到数据库的连接对象;
		return DriverManager.getConnection(URL, USERNAME, PASSWORD);
	}

	// 关闭数据库连接;
	public static void closed(ResultSet rs, Statement st, Connection con) {
		if(rs != null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}			
		}
		if(st != null){
			try {
				st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(con != null){
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}			
		}
	}
	
	@SuppressWarnings("unchecked")
	public static Connection openInThread() throws Exception{
		Connection con = (Connection)threadLocal.get();
		if(null == con){
			con = open();
			threadLocal.set(con);
		}
		return con;
	}
	
	public static void closeInThread(){
		Connection con;
		try {
			con = openInThread();
			con.close();
		} catch (Exception e) {}
		threadLocal.remove();
	}	
}


总结:

分享到:
评论

相关推荐

    Oracle10G创建s_emp练习表的脚本与执行过程

    在压缩包文件"Oracle授课脚本S_EMP"中,可能包含了完整的创建`s_emp`表的脚本,以及可能的其他相关操作,如插入数据、查看表结构、查询数据等。这些脚本可以帮助初学者更深入地理解Oracle数据库的使用。 插入数据...

    s_emp,emp表建表脚本

    这里我们关注的是两个特定的表——`s_emp` 和 `emp`。`s_emp` 可能是系统或应用中预定义的一个扩展或改进版本,而 `emp` 是一个经典的关系数据库模式,通常用于教学和示例,源自IBM的SQL教程。这两个表的建表脚本...

    S_CUSTOMER、S_EMP、S_DEPT、S_IMAGE、S_INVENTORY、S_ITEM、S_LONGTEXT、S_ORD等脚本

    标题中的"S_CUSTOMER、S_EMP、S_DEPT、S_IMAGE、S_INVENTORY、S_ITEM、S_LONGTEXT、S_ORD"这些词汇表明,这是一组与数据库相关的脚本,可能用于创建或操作Oracle数据库中的表。这些表名分别代表了不同的业务实体,...

    a__concommand_emp事务_插入.rar_ADO

    "插入"表明这个示例将展示如何使用ADO向数据库中插入新记录。 描述中提到,这个例子着重展示了如何访问数据库中的BLOB(Binary Large Object)数据类型,BLOB通常用来存储图像、文档等非结构化数据。在数据库操作中...

    emp.zip_eclipse+emp_emp.jar_java EMP_javaweb_jdbc

    在本项目中,"emp.zip_eclipse+emp_emp.jar_java EMP_javaweb_jdbc" 涉及到了一系列与Java Web开发相关的技术,主要包括Eclipse IDE、EMP应用、Java EMP模块、JavaWeb以及JDBC数据库连接。接下来,我们将详细讨论...

    EMPDemo.rar_EMP.dll_emp发送流程

    在IT行业中,EMP(Enterprise Message Platform)通常是指企业级消息平台,用于在不同的系统和应用程序之间传递数据和信息。在本场景中,"EMPDemo.rar"是一个压缩包,其中包含"EMP.dll"和其他相关文件,这可能是一个...

    Emp.zip_EMP_bornjwe_eclipse+emp_empinf_forthnod

    在`EMP`项目中,你可能会学习到如何编写SQL查询来检索、插入、更新或删除`EMP`表中的数据,比如`SELECT`、`INSERT INTO`、`UPDATE`和`DELETE FROM`语句。 4. **JDBC**: Java Database Connectivity是Java平台的一...

    emp.rar_EMP_averaging method

    在IT领域,特别是在科学计算与数据分析中,有效平均(Effective Medium Approximation,简称EMP)方法是一种重要的数值处理技术。标题中的"emp.rar_EMP_averaging method"提示我们这是一份关于EMP平均方法的压缩包...

    EMP1270.zip_SPI VHDL_VHDL_SPI_emp1270_spi_vhdl spi

    在这个名为"EMP1270.zip_SPI VHDL_VHDL_SPI_emp1270_spi_vhdl"的压缩包中,我们主要关注的是如何使用VHDL语言实现SPI接口,特别是与AD7634数据转换器的通信。 VHDL(VHSIC Hardware Description Language)是一种...

    verilog_EX1_emp240分频程序_

    本项目名为"verilog_EX1_emp240分频程序",它涉及到使用Verilog编写针对EMP240芯片的分频器设计。EMP240通常是一款CPLD(复杂可编程逻辑器件)芯片,适用于实现各种数字逻辑功能,如时钟分频。 首先,我们要理解...

    Oracle数据库Sql语句详解大全.ppt

    例如:SELECT last_name, salary + salary * NVL(commission_pct, 0) / 100 FROM s_emp; // 查询 s_emp 表中的员工姓名和工资 去掉重复行 可以使用 DISTINCT 关键字去掉重复行。 例如:SELECT DISTINCT name FROM...

    emp_dept表结构和表数据

    而`emp_dept表数据.sql` 文件则包含插入到这两个表中的具体数据。这些数据可能是通过`INSERT INTO`语句添加的,用于模拟真实世界的场景,帮助学习者进行各种查询和操作。 通过这两个文件,你可以学习如何使用SQL...

    数据库脚本

    接下来,`insert_s_emp.sql` 文件包含的是DML(Data Manipulation Language)语句,主要用于向`e_emp`表中插入数据。这些语句通常是`INSERT INTO`语句,用于将数据行添加到已存在的表中。例如,插入一条新员工记录的...

    oracle语法大全.docx

    例如,UPDATE s_emp SET SALARY = 10000 WHERE ID = 1; * DELETE:删除语句,用于删除数据库中的数据。例如,DELETE FROM s_emp WHERE ID = 1; 查询语句 * FROM 子句:用于指定要检索的表。例如,SELECT * FROM s_...

    ZGR_SELECT_EMP.txt

    文件标题为“ZGR_SELECT_EMP.txt”,描述为“ZGR_SELECT_EMP”,标签为空,表明这是一个与数据库查询、界面处理和用户交互相关的SAP ABAP程序。 知识点一:本地接口(Local Interface) 在程序中,`REFERENCE(NAME_...

    dept_emp.sql

    dept_emp.sql

    Oracle中多表关联批量插入批量更新与批量删除操作

    在Oracle中,如果两个或多个表之间存在关联,比如`emp`表和`dept`表通过`deptno`字段关联,批量插入数据时需要确保关联关系的一致性。例如,插入`emp`表时,`deptno`字段应引用已存在于`dept`表中的`deptno`。可以先...

    Emp_Test.rar_EMP_vb.net

    标题中的"Emp_Test.rar_EMP_vb.net"表明这是一个关于员工管理测试项目的压缩文件,使用了VB.NET编程语言。VB.NET是Microsoft .NET框架的一部分,它是一种面向对象的编程语言,适用于开发各种类型的应用程序,包括...

    39.针对上面的salaries表emp_no字段创建索引idx_emp_no.md

    39.针对上面的salaries表emp_no字段创建索引idx_emp_no.md

    Oracle数据库Sql语句详解大全73431414.pptx

    可以使用SELECT语句查询指定的列,例如,查询s_emp表中的部门ID和工资:SELECT dept_id, salary FROM s_emp。 三、运算符对空值的处理 可以使用算数表达式对空值进行处理,例如,查询s_emp表中的年薪:SELECT ...

Global site tag (gtag.js) - Google Analytics