引用
向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();
}
}
总结:
分享到:
相关推荐
在压缩包文件"Oracle授课脚本S_EMP"中,可能包含了完整的创建`s_emp`表的脚本,以及可能的其他相关操作,如插入数据、查看表结构、查询数据等。这些脚本可以帮助初学者更深入地理解Oracle数据库的使用。 插入数据...
这里我们关注的是两个特定的表——`s_emp` 和 `emp`。`s_emp` 可能是系统或应用中预定义的一个扩展或改进版本,而 `emp` 是一个经典的关系数据库模式,通常用于教学和示例,源自IBM的SQL教程。这两个表的建表脚本...
标题中的"S_CUSTOMER、S_EMP、S_DEPT、S_IMAGE、S_INVENTORY、S_ITEM、S_LONGTEXT、S_ORD"这些词汇表明,这是一组与数据库相关的脚本,可能用于创建或操作Oracle数据库中的表。这些表名分别代表了不同的业务实体,...
"插入"表明这个示例将展示如何使用ADO向数据库中插入新记录。 描述中提到,这个例子着重展示了如何访问数据库中的BLOB(Binary Large Object)数据类型,BLOB通常用来存储图像、文档等非结构化数据。在数据库操作中...
在本项目中,"emp.zip_eclipse+emp_emp.jar_java EMP_javaweb_jdbc" 涉及到了一系列与Java Web开发相关的技术,主要包括Eclipse IDE、EMP应用、Java EMP模块、JavaWeb以及JDBC数据库连接。接下来,我们将详细讨论...
在IT行业中,EMP(Enterprise Message Platform)通常是指企业级消息平台,用于在不同的系统和应用程序之间传递数据和信息。在本场景中,"EMPDemo.rar"是一个压缩包,其中包含"EMP.dll"和其他相关文件,这可能是一个...
在`EMP`项目中,你可能会学习到如何编写SQL查询来检索、插入、更新或删除`EMP`表中的数据,比如`SELECT`、`INSERT INTO`、`UPDATE`和`DELETE FROM`语句。 4. **JDBC**: Java Database Connectivity是Java平台的一...
在IT领域,特别是在科学计算与数据分析中,有效平均(Effective Medium Approximation,简称EMP)方法是一种重要的数值处理技术。标题中的"emp.rar_EMP_averaging method"提示我们这是一份关于EMP平均方法的压缩包...
而`emp_dept表数据.sql` 文件则包含插入到这两个表中的具体数据。这些数据可能是通过`INSERT INTO`语句添加的,用于模拟真实世界的场景,帮助学习者进行各种查询和操作。 通过这两个文件,你可以学习如何使用SQL...
在这个名为"EMP1270.zip_SPI VHDL_VHDL_SPI_emp1270_spi_vhdl"的压缩包中,我们主要关注的是如何使用VHDL语言实现SPI接口,特别是与AD7634数据转换器的通信。 VHDL(VHSIC Hardware Description Language)是一种...
本项目名为"verilog_EX1_emp240分频程序",它涉及到使用Verilog编写针对EMP240芯片的分频器设计。EMP240通常是一款CPLD(复杂可编程逻辑器件)芯片,适用于实现各种数字逻辑功能,如时钟分频。 首先,我们要理解...
例如:SELECT last_name, salary + salary * NVL(commission_pct, 0) / 100 FROM s_emp; // 查询 s_emp 表中的员工姓名和工资 去掉重复行 可以使用 DISTINCT 关键字去掉重复行。 例如:SELECT DISTINCT name FROM...
接下来,`insert_s_emp.sql` 文件包含的是DML(Data Manipulation Language)语句,主要用于向`e_emp`表中插入数据。这些语句通常是`INSERT INTO`语句,用于将数据行添加到已存在的表中。例如,插入一条新员工记录的...
例如,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”,标签为空,表明这是一个与数据库查询、界面处理和用户交互相关的SAP ABAP程序。 知识点一:本地接口(Local Interface) 在程序中,`REFERENCE(NAME_...
dept_emp.sql
在Oracle中,如果两个或多个表之间存在关联,比如`emp`表和`dept`表通过`deptno`字段关联,批量插入数据时需要确保关联关系的一致性。例如,插入`emp`表时,`deptno`字段应引用已存在于`dept`表中的`deptno`。可以先...
标题中的"Emp_Test.rar_EMP_vb.net"表明这是一个关于员工管理测试项目的压缩文件,使用了VB.NET编程语言。VB.NET是Microsoft .NET框架的一部分,它是一种面向对象的编程语言,适用于开发各种类型的应用程序,包括...
39.针对上面的salaries表emp_no字段创建索引idx_emp_no.md
可以使用SELECT语句查询指定的列,例如,查询s_emp表中的部门ID和工资:SELECT dept_id, salary FROM s_emp。 三、运算符对空值的处理 可以使用算数表达式对空值进行处理,例如,查询s_emp表中的年薪:SELECT ...