`

java操作Oracle批量入库

阅读更多

        如下实你还分别是用"Oracle的自定义类型定义表类型"、"Oracle的基本类型定义表类型"、"JDBC BATCH"一次性向Oracle插入10000条数据的用时进行了测试。Oracle提供ARRAY跟TABLE跟OBJECT类型拿来入库效率不远不如JDBC的Batch方法。

一.准备数据表

-- Create table
create table DATE_JH_INC_UDR_01
(
  SERIAL_NUMBER    VARCHAR2(16) not null,
  OPR_TYPE         VARCHAR2(10) not null,
  SERV_CODE        VARCHAR2(10) not null,
  SP_CODE          VARCHAR2(10) not null,
  OPER_CODE        VARCHAR2(20) not null,
  INPUT_START_DATE DATE,
  INPUT_END_DATE   DATE,
  OPR_TIME         DATE,
  EFF_TIME         DATE not null,
  OPR_SOURCE       VARCHAR2(10),
  THIRD_DN         VARCHAR2(30),
  CHRG_TYPE        VARCHAR2(10)
);
-- Create/Recreate primary, unique and foreign key constraints 
alter table DATE_JH_INC_UDR_01
  add constraint PK_DATE_JH_INC_UDR_01 primary key (SERIAL_NUMBER, OPR_TYPE, SERV_CODE, SP_CODE, OPER_CODE, EFF_TIME);
-- Create/Recreate indexes 
create index IDX_DATE_JH_INC_UDR_011 on DATE_JH_INC_UDR_01 (SP_CODE, OPER_CODE);

二.采用Oracle"基本类型"定义表类型入库

1.数据库准备

--数据库准备:
CREATE OR REPLACE TYPE D_SERIAL_NUMBER IS TABLE OF NVARCHAR2(16);
CREATE OR REPLACE TYPE D_OPR_TYPE IS TABLE OF NVARCHAR2(2);
CREATE OR REPLACE TYPE D_SERV_CODE IS TABLE OF NUMBER(10);
CREATE OR REPLACE TYPE D_SP_CODE IS TABLE OF NVARCHAR2(10);
CREATE OR REPLACE TYPE D_OPER_CODE IS TABLE OF NVARCHAR2(20);
CREATE OR REPLACE TYPE D_INPUT_START_DATE IS TABLE OF NVARCHAR2(25);
CREATE OR REPLACE TYPE D_INPUT_END_DATE IS TABLE OF NVARCHAR2(25);
CREATE OR REPLACE TYPE D_OPR_TIME IS TABLE OF NVARCHAR2(25);
CREATE OR REPLACE TYPE D_EFF_TIME IS TABLE OF NVARCHAR2(25);
CREATE OR REPLACE TYPE D_OPR_SOURCE IS TABLE OF NVARCHAR2(2);
CREATE OR REPLACE TYPE D_THIRD_DN IS TABLE OF NVARCHAR2(30);
CREATE OR REPLACE TYPE D_CHRG_TYPE IS TABLE OF NVARCHAR2(2);

CREATE OR REPLACE PROCEDURE ARRAY_TO_IBOSS_UDR2(V_1 D_SERIAL_NUMBER,V_2 D_OPR_TYPE,V_3 D_SERV_CODE,V_4 D_SP_CODE,V_5 D_OPER_CODE,V_6 D_INPUT_START_DATE,V_7 D_INPUT_END_DATE,V_8 D_OPR_TIME,V_9 D_EFF_TIME,V_10 D_OPR_SOURCE,V_11 D_THIRD_DN,V_12 D_CHRG_TYPE,O_ERR OUT VARCHAR2,SUCC_COUNT OUT NUMBER,FAIL_COUNT OUT NUMBER)
	AS
	I INTEGER;
	BEGIN
	    I:=0;
	    SUCC_COUNT:=0;
	    FAIL_COUNT:=0;
	    WHILE I<V_1.COUNT LOOP
	    BEGIN
	        I:=I+1;
	        INSERT INTO DATE_JH_INC_UDR_01 VALUES(V_1(I),V_2(I),V_3(I),V_4(I),V_5(I),TO_DATE(V_6(I),'YYYY-MM-DD HH24:MI:SS'),TO_DATE(V_7(I),'YYYY-MM-DD HH24:MI:SS'),TO_DATE(V_8(I),'YYYY-MM-DD HH24:MI:SS'),TO_DATE(V_9(I),'YYYY-MM-DD HH24:MI:SS'),V_10(I),V_11(I),V_12(I));
	        SUCC_COUNT:=SUCC_COUNT+1;
	    EXCEPTION
	    WHEN OTHERS THEN
	    FAIL_COUNT:=FAIL_COUNT+1;
	    O_ERR := I||':'||SQLERRM;
	    END;
	    END LOOP;
END;

2.Java代码

package com.bijian.study;


import java.sql.CallableStatement;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.List;

import oracle.jdbc.OracleConnection;
import oracle.sql.ARRAY;

public class BaseTypeDataDeal {

	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws Exception
	{
		System.out.println("----------这是使用Oracle\"基本类型\"定义表类型入库--------");
		long datebegin = System.currentTimeMillis();
		try{
			int succcount=0;
			int failcount=0;
			
			long datebegin1 = System.currentTimeMillis();
			List s1 = new ArrayList();
			List s2 = new ArrayList();
			List s3 = new ArrayList();
			List s4 = new ArrayList();
			List s5 = new ArrayList();
			List s6 = new ArrayList();
			List s7 = new ArrayList();
			List s8 = new ArrayList();
			List s9 = new ArrayList();
			List s10 = new ArrayList();
			List s11 = new ArrayList();
			List s12 = new ArrayList();
			oracle.sql.ArrayDescriptor a = null;
			oracle.sql.ArrayDescriptor b = null;
			oracle.sql.ArrayDescriptor c = null;
			oracle.sql.ArrayDescriptor d = null;
			oracle.sql.ArrayDescriptor e = null;
			oracle.sql.ArrayDescriptor f = null;
			oracle.sql.ArrayDescriptor g = null;
			oracle.sql.ArrayDescriptor h = null;
			oracle.sql.ArrayDescriptor j = null;
			oracle.sql.ArrayDescriptor k = null;
			oracle.sql.ArrayDescriptor l = null;
			oracle.sql.ArrayDescriptor m = null;
			for (int i = 0; i < 10000; i++) {
				s1.add(i);
				s2.add("00");
				s3.add("0000");
				s4.add("0000");
				s5.add("0000");
				s6.add("20131226000000");
				s7.add("20131226235959");
				s8.add("20131227120054");
				s9.add("20131228120054");
				s10.add("00");
				s11.add("深");
				s12.add("圳");
			}
			long end1 = System.currentTimeMillis();
			System.out.println("组装list用时:"+(end1-datebegin1)+"毫秒");
			
			
			long date1 = System.currentTimeMillis();
			OracleConnection conn = null;
			CallableStatement cstmt = null;
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = (OracleConnection)DriverManager.getConnection("jdbc:oracle:thin:@"+"10.20.128.188"+":1521:"+"orcl", "test", "root");
			a = oracle.sql.ArrayDescriptor.createDescriptor("D_SERIAL_NUMBER", conn);
			b = oracle.sql.ArrayDescriptor.createDescriptor("D_OPR_TYPE", conn);
			c = oracle.sql.ArrayDescriptor.createDescriptor("D_SERV_CODE", conn);
			d = oracle.sql.ArrayDescriptor.createDescriptor("D_SP_CODE", conn);
			e = oracle.sql.ArrayDescriptor.createDescriptor("D_OPER_CODE", conn);
			f = oracle.sql.ArrayDescriptor.createDescriptor("D_INPUT_START_DATE", conn);
			g = oracle.sql.ArrayDescriptor.createDescriptor("D_INPUT_END_DATE", conn);
			h = oracle.sql.ArrayDescriptor.createDescriptor("D_OPR_TIME", conn);
			j = oracle.sql.ArrayDescriptor.createDescriptor("D_EFF_TIME", conn);
			k = oracle.sql.ArrayDescriptor.createDescriptor("D_OPR_SOURCE", conn);
			l = oracle.sql.ArrayDescriptor.createDescriptor("D_THIRD_DN", conn);
			m = oracle.sql.ArrayDescriptor.createDescriptor("D_CHRG_TYPE", conn);
			long date2 = System.currentTimeMillis();
			System.out.println("数据库连接准备用时:"+(date2-date1)+"毫秒");
			
			long array1 = System.currentTimeMillis();
			ARRAY a_test = new ARRAY(a, conn, s1.toArray());
			ARRAY b_test = new ARRAY(b, conn, s2.toArray());
			ARRAY c_test = new ARRAY(c, conn, s3.toArray());
			ARRAY d_test = new ARRAY(d, conn, s4.toArray());
			ARRAY e_test = new ARRAY(e, conn, s5.toArray());
			ARRAY f_test = new ARRAY(f, conn, s6.toArray());
			ARRAY g_test = new ARRAY(g, conn, s7.toArray());
			ARRAY h_test = new ARRAY(h, conn, s8.toArray());
			ARRAY j_test = new ARRAY(j, conn, s9.toArray());
			ARRAY k_test = new ARRAY(k, conn, s10.toArray());
			ARRAY l_test = new ARRAY(l, conn, s11.toArray());
			ARRAY m_test = new ARRAY(m, conn, s12.toArray());
			long array2 = System.currentTimeMillis();
			System.err.println("组装ARRAY用时:"+(array2-array1)+"毫秒");
			
			long params1 = System.currentTimeMillis();
			cstmt = conn.prepareCall("{ call array_to_iboss_udr2(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
			cstmt.setObject(1, a_test);
			cstmt.setObject(2, b_test);
			cstmt.setObject(3, c_test);
			cstmt.setObject(4, d_test);
			cstmt.setObject(5, e_test);
			cstmt.setObject(6, f_test);
			cstmt.setObject(7, g_test);
			cstmt.setObject(8, h_test);
			cstmt.setObject(9, j_test);
			cstmt.setObject(10, k_test);
			cstmt.setObject(11, l_test);
			cstmt.setObject(12, m_test);
			cstmt.registerOutParameter(13, java.sql.Types.VARCHAR);
			cstmt.registerOutParameter(14, java.sql.Types.NUMERIC);
			cstmt.registerOutParameter(15, java.sql.Types.NUMERIC);
			long params2 = System.currentTimeMillis();
			System.out.println("设置参数用时:"+(params2-params1)+"毫秒");
			
			long exe1 = System.currentTimeMillis();
			cstmt.execute();
			long exe2 = System.currentTimeMillis();
			System.err.println("执行用时:"+(exe2-exe1)+"毫秒");
			
			long cl1 = System.currentTimeMillis();
			String error_info = cstmt.getString(13);
			succcount = succcount+cstmt.getInt(14);
			failcount = failcount+cstmt.getInt(15);
			if(error_info!=null)System.out.println(error_info);
			long cl2 = System.currentTimeMillis();
			cstmt.close();
			conn.close();
			System.out.println("获取返回参数及关闭用时:"+(cl2-cl1)+"毫秒");
		}
		catch(Exception e){
			e.printStackTrace();
		}
		
		long end = System.currentTimeMillis();
		System.out.println("入库总用时:"+(end-datebegin)+"毫秒"+"  秒数为:"+((end-datebegin)/1000.0));

	}
}

执行之前清除数据:TRUNCATE TABLE DATE_JH_INC_UDR_01;

运行结果:

----------这是使用Oracle"基本类型"定义表类型入库--------
组装list用时:9毫秒
数据库连接准备用时:1189毫秒
组装ARRAY用时:52毫秒
设置参数用时:110毫秒
执行用时:10136毫秒
获取返回参数及关闭用时:0毫秒
入库总用时:11506毫秒  秒数为:11.506

 

三.采用Oracle"自定义类型"定义表类型入库

1.数据库类型准备

  --创建一个Object类型
  CREATE OR REPLACE TYPE o_d_type AS OBJECT
  (
    SERIAL_NUMBER    NVARCHAR2(16),
    OPR_TYPE         NVARCHAR2(10),
    SERV_CODE        NVARCHAR2(10),
    SP_CODE          NVARCHAR2(10),
    OPER_CODE        NVARCHAR2(20),
    INPUT_START_DATE NVARCHAR2(30),
    INPUT_END_DATE   NVARCHAR2(30),
    OPR_TIME         NVARCHAR2(30),
    EFF_TIME         NVARCHAR2(30),
    OPR_SOURCE       NVARCHAR2(10),
    THIRD_DN         NVARCHAR2(30),
    CHRG_TYPE        NVARCHAR2(10)
  );
  --创建一个Table类型——对象表
  CREATE OR REPLACE TYPE t_d_type AS TABLE OF o_d_type;
  
  /*
   * 批量入库存储过程
   */
  CREATE OR REPLACE PROCEDURE ARRAY_TO_IBOSS_UDR(V_1        IN T_D_TYPE, --table类型参数
                                                 O_ERR      OUT VARCHAR2,
                                                 SUCC_COUNT OUT NUMBER,
                                                 FAIL_COUNT OUT NUMBER) AS
    I      INTEGER;
    V_TYPE O_D_TYPE; --object 类型变量
  BEGIN
    I          := 0;
    SUCC_COUNT := 0;
    FAIL_COUNT := 0;
    WHILE I < V_1.COUNT LOOP
      BEGIN
        I      := I + 1;
        V_TYPE := V_1(I); --将table里的值赋给object
        INSERT INTO DATE_JH_INC_UDR_01
        VALUES
          (V_TYPE.SERIAL_NUMBER,
           V_TYPE.OPR_TYPE,
           V_TYPE.SERV_CODE,
           V_TYPE.SP_CODE,
           V_TYPE.OPER_CODE,
           TO_DATE(V_TYPE.INPUT_START_DATE, 'YYYY-MM-DD HH24:MI:SS'),
           TO_DATE(V_TYPE.INPUT_END_DATE, 'YYYY-MM-DD HH24:MI:SS'),
           TO_DATE(V_TYPE.OPR_TIME, 'YYYY-MM-DD HH24:MI:SS'),
           TO_DATE(V_TYPE.EFF_TIME, 'YYYY-MM-DD HH24:MI:SS'),
           V_TYPE.OPR_SOURCE,
           V_TYPE.THIRD_DN,
           V_TYPE.CHRG_TYPE);
        SUCC_COUNT := SUCC_COUNT + 1;
      EXCEPTION
        WHEN OTHERS THEN
          FAIL_COUNT := FAIL_COUNT + 1;
          O_ERR      := I || ':' || SQLERRM;
      END;
    END LOOP;
  END;

2.Java代码

package com.bijian.study;

import java.sql.CallableStatement;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.List;
import oracle.jdbc.OracleConnection;
import oracle.sql.ARRAY;

public class CustomTypeDataDeal {

	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		
		System.out.println("----------这是使用Oracle\"自定义类型\"定义表类型入库--------");
		long datebegin = System.currentTimeMillis();
		try{
			int succcount=0;
			int failcount=0;
			
			long datebegin1 = System.currentTimeMillis();
			List s = new ArrayList();
			for (int i = 0; i < 10000; i++) {
				Object[] o1 = new Object[12];
				o1[0] = "0"+i;
				o1[1] = "0";
				o1[2] = "0";
				o1[3] = "0";
				o1[4] = "0";
				o1[5] = "20131226";
				o1[6] = "20131226";
				o1[7] = "20131226";
				o1[8] = "20131226";
				o1[9] = "0"+i;
				o1[10] = "深";
				o1[11] = "圳";
				s.add(o1);
			}
			long end1 = System.currentTimeMillis();
			System.out.println("组装list用时:"+(end1-datebegin1)+"毫秒");
			
			
			long date1 = System.currentTimeMillis();
			OracleConnection conn = null;
			CallableStatement cstmt = null;
			oracle.sql.ArrayDescriptor a = null; 
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = (OracleConnection)DriverManager.getConnection("jdbc:oracle:thin:@"+"10.20.128.188"+":1521:"+"orcl", "test", "root");
			a = oracle.sql.ArrayDescriptor.createDescriptor("T_D_TYPE", conn);
			long date2 = System.currentTimeMillis();
			System.out.println("数据库连接准备用时:"+(date2-date1)+"毫秒");
			
			long array1 = System.currentTimeMillis();
			ARRAY a_test = new ARRAY(a, conn, s.toArray());
			long array2 = System.currentTimeMillis();
			System.err.println("组装ARRAY用时:"+(array2-array1)+"毫秒");
			
			long params1 = System.currentTimeMillis();
			cstmt = conn.prepareCall("{ call array_to_iboss_udr(?,?,?,?) }");
			cstmt.setObject(1, a_test);
			cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);
			cstmt.registerOutParameter(3, java.sql.Types.NUMERIC);
			cstmt.registerOutParameter(4, java.sql.Types.NUMERIC);
			long params2 = System.currentTimeMillis();
			System.out.println("设置参数用时:"+(params2-params1)+"毫秒");
			
			long exe1 = System.currentTimeMillis();
			cstmt.execute();
			long exe2 = System.currentTimeMillis();
			System.err.println("执行用时:"+(exe2-exe1)+"毫秒");
			
			long cl1 = System.currentTimeMillis();
			String error_info = cstmt.getString(2);
			succcount = succcount+cstmt.getInt(3);
			failcount = failcount+cstmt.getInt(4);
			if(error_info!=null)System.out.println(error_info);
			cstmt.close();
			conn.close();
			long cl2 = System.currentTimeMillis();
			System.out.println("获取返回参数及关闭用时:"+(cl2-cl1)+"毫秒");
		}
		catch(Exception e){
			e.printStackTrace();  
		}
		long end = System.currentTimeMillis();
		System.out.println("入库总用时:"+(end-datebegin)+"毫秒"+"  秒数为:"+((end-datebegin)/1000.0));
	}
}

执行之前清除数据:TRUNCATE TABLE DATE_JH_INC_UDR_01;

运行结果:

----------这是使用Oracle"自定义类型"定义表类型入库--------
组装list用时:15毫秒
数据库连接准备用时:3757毫秒
组装ARRAY用时:126毫秒
设置参数用时:315毫秒
执行用时:11556毫秒
获取返回参数及关闭用时:18毫秒
入库总用时:15788毫秒  秒数为:15.788

三.采用"JDBCBATCH"进行批量入库

        数据库不用存储过程,就一张表放在那里就好

Java程序:

package com.bijian.study;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.sql.Date;
import java.util.List;

import oracle.jdbc.OracleConnection;

public class JdbcBatchDataDeal {

	/**
	 * @param args
	 * @throws ClassNotFoundException 
	 * @throws SQLException 
	 * @throws ParseException 
	 */
	public static void main(String[] args) throws ClassNotFoundException, SQLException, ParseException {
		
		System.out.println("----------这是使用JDBC入库--------");
		long datebegin = System.currentTimeMillis();
		List<Object[]> s = new ArrayList<Object[]>();
		for (int i = 0; i < 10000; i++) {
			Object[] o1 = new Object[12];
			o1[0] = "0"+i;
			o1[1] = "0";
			o1[2] = "0";
			o1[3] = "0";
			o1[4] = "0";
			o1[5] = "20131226";
			o1[6] = "20131226";
			o1[7] = "20131226";
			o1[8] = "20131226";
			o1[9] = "0"+i;
			o1[10] = "深";
			o1[11] = "圳";
			s.add(o1);
		}
		long end1 = System.currentTimeMillis();
		System.out.println("组装list用时:"+(end1-datebegin)+"毫秒");
		
		long date1 = System.currentTimeMillis();
		Class.forName("oracle.jdbc.driver.OracleDriver");
		OracleConnection conn = null;
		conn = (OracleConnection)DriverManager.getConnection("jdbc:oracle:thin:@"+"10.20.128.188"+":1521:"+"orcl", "test", "root");
		String sql = "INSERT INTO DATE_JH_INC_UDR_01 VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
		PreparedStatement ps = conn.prepareStatement(sql);
		long date2 = System.currentTimeMillis();
		System.out.println("数据库连接准备用时:"+(date2-date1)+"毫秒");
		
		long array1 = System.currentTimeMillis();
		//设置1w条提交一次
		/*final int batchSize = 10000;
		int count = 0;*/
		for (Object[] obj: s) {
		    ps.setString(1, obj[0].toString());
		    ps.setString(2, obj[1].toString());
		    ps.setString(3, obj[2].toString());
		    ps.setString(4, obj[3].toString());
		    ps.setString(5, obj[4].toString());
		    ps.setDate(6, getDate(obj[5].toString()));
		    ps.setDate(7, getDate(obj[6].toString()));
		    ps.setDate(8, getDate(obj[7].toString()));
		    ps.setDate(9, getDate(obj[8].toString()));
		    ps.setString(10, obj[9].toString());
		    ps.setString(11, obj[10].toString());
		    ps.setString(12, obj[11].toString());
		    ps.addBatch();
		    /*if(++count % batchSize == 0) {
		        ps.executeBatch();
		    }*/
		}
		long array2 = System.currentTimeMillis();
		System.err.println("组装SQL用时:"+(array2-array1)+"毫秒");
		
		long params1 = System.currentTimeMillis();
		ps.executeBatch(); 
		long params2 = System.currentTimeMillis();
		System.out.println("执行用时:"+(params2-params1)+"毫秒");
		
		long cl1 = System.currentTimeMillis();
		ps.close();
		conn.close();
		long cl2 = System.currentTimeMillis();
		System.out.println("关闭用时:"+(cl2-cl1)+"毫秒");
		
		long end = System.currentTimeMillis();
		System.out.println("入库总用时:"+(end-datebegin)+"毫秒"+"  秒数为:"+((end-datebegin)/1000.0));
	}
	
	public static Date getDate(String str) throws ParseException{
		SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
		return new Date(df.parse(str).getTime());
	}
}

执行之前清除数据:TRUNCATE TABLE DATE_JH_INC_UDR_01;

运行结果:

----------这是使用JDBC入库--------
组装list用时:14毫秒
数据库连接准备用时:1259毫秒
组装SQL用时:1165毫秒
执行用时:339毫秒
关闭用时:6毫秒
入库总用时:2786毫秒  秒数为:2.786

 

文章来源:http://bbs.csdn.net/topics/390733080

分享到:
评论

相关推荐

    java操作Oracle数据库——ARRAY、TABLE类型批量入库

    总之,通过Java操作Oracle的ARRAY和TABLE类型,我们可以高效地执行批量入库操作。这种方式减少了网络通信次数,提高了程序性能。但需要注意的是,合理控制批量大小,以避免内存溢出和数据库锁竞争等问题。在实践中,...

    51CTO下载-java-操作Oracle-批量入库的问题.docx

    在Java中操作Oracle数据库进行批量入库时,可能会遇到性能问题,这涉及到数据库优化、批处理策略以及数据类型的选择。以下是一些关键知识点: 1. **Oracle自定义类型(Table类型)**: Oracle允许创建自定义的表...

    51CTO下载-java-操作Oracle-批量入库的问题.pdf

    在本文档中,作者探讨了使用Java操作Oracle数据库进行批量入库时遇到的性能问题。具体而言,他描述了在不同的方法下,如使用Oracle的自定义类型定义表类型、基本类型定义表类型以及JDBC批处理(JDBCBATCH)进行10000...

    java调用存储过程实现批量入库.pdf

    这样,一次调用即可完成批量入库操作,避免了多次数据库交互。 4. **Java 调用存储过程**: 在Java中,可以使用JDBC(Java Database Connectivity)API来调用Oracle存储过程。首先,需要加载Oracle的JDBC驱动,并...

    java调用存储过程实现批量入库.docx

    在Java中调用存储过程实现批量入库是一种优化数据库操作的有效方式,特别是在处理大量数据时,可以显著提升效率。以下是对这个主题的详细说明: 首先,我们需要了解存储过程是什么。存储过程是预编译的SQL语句集合...

    java快速插入千万级数据

    java快速插入千万级数据,亲测91秒插入1700万数据!!!

    Java多线程批量数据导入的方法详解

    Java多线程批量数据导入的方法详解 在数据处理中,遇到大量数据导入时,为了提高处理的速度,可以选择使用多线程来批量处理这些处理。常见的场景有大文件导入数据库、数据同步等。在这些场景中,数据导入的过程可以...

    Java数据库连接+操作(模板方法模式应用)

    这些工具类可能封装了如上所述的模板方法,提供了更简便的方式来执行常见的数据库操作,比如批量插入、事务处理等。通过这些工具类,开发者可以更专注于业务逻辑,而无需关心底层的数据库连接和操作细节。 总的来说...

    JAVA GUI NetBeans工程 图片批量导入程序

    综上所述,【JAVA GUI NetBeans工程 图片批量导入程序】是一个结合了Java GUI技术、文件系统操作、数据库管理和图片处理的综合应用,旨在优化大量图片的管理和导入流程,尤其适用于有组织结构的人员信息管理场景。

    oracle 接口开发资料

    - INV(库存管理):接口用于库存的入库、出库、调整等操作,例如,使用INV_ITEM_TRANSACTIONS_INTERFACE处理库存交易。 **4. 开发过程和最佳实践** 开发Oracle EBS接口时,应遵循以下最佳实践: - 数据一致性:...

    java进销管理系统

    2. 数据库管理:使用MySQL、Oracle或SQL Server等关系型数据库,通过JDBC或MyBatis等持久层框架进行数据操作。ORM(对象关系映射)技术使得数据库操作更加直观和灵活。 3. 前端技术:采用HTML、CSS和JavaScript构建...

    java实现药房管理系统

    2. **数据库连接与操作**:Java通过JDBC(Java Database Connectivity)接口与数据库进行交互,例如MySQL或Oracle。系统需要建立数据库来存储药品信息、库存、销售记录等,并编写SQL语句进行数据的增删改查。 3. **...

    基于java的仓库管理系统+流程图

    - **入库管理**:支持批量入库、条形码扫描等功能。 - **出库管理**:支持快速查找库存、智能配货等操作。 - **库存管理**:实时更新库存信息,提供库存预警机制。 - **报表统计**:自动生成各类统计报表,帮助管理...

    仓储管理系统java

    1. 入库管理:系统提供录入新货物、批量导入库存数据等功能,确保准确无误地记录每一件商品的入库信息。 2. 出库管理:支持根据订单或需求进行出库操作,同时记录详细的出库记录,包括货物名称、数量、出库时间等。 ...

Global site tag (gtag.js) - Google Analytics