免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
java調(diào)用存儲過程實現(xiàn)批量入庫
在處理大量日志數(shù)據(jù)庫入庫時,為了提高速度我們經(jīng)常用的策略就是批量入庫,而不是單條數(shù)據(jù)提交。
為了最大程度上發(fā)揮Oracle的性能,可以考慮采用存儲過程、type組合來實現(xiàn)批量入庫。
1、創(chuàng)建type
CREATE OR REPLACE TYPE type_object AS OBJECT
(
  ID  NUMBER,
  DAY DATE,
  STR VARCHAR2(100)
)
 
CREATE OR REPLACE TYPE ARRAY_object
  AS table OF type_object
2、創(chuàng)建表
create table T_OBJECT
(
  ID  NUMBER,
  DAY DATE,
  STR VARCHAR2(100)
)
3、創(chuàng)建存儲過程,收入?yún)?shù)就是ARRAY_object類型。
create or replace procedure p_batch_insert(i_object in array_object) is
begin
  insert into t_object
    (id, day, str)
    select id, day, str
      from the (select cast(i_object as array_object) from dual);
end p_batch_insert;
4、測試的JAVA程序
package com;
import java.sql.*;
import com.timesten.jdbc.TimesTenDataSource;
import oracle.jdbc.OraclePreparedStatement;

public class Test4 {
 public static void main(String arg[]) {
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   //Class.forName("com.timesten.jdbc.TimesTenDriver");
   String url="jdbc:oracle:thin:@192.168.6.100:1521:logstat1";
  // String url = "jdbc:timesten:direct:dsn=ttdemo;uid=logstat;pwd=logstat;ORACLEID=logstat_214;OraclePWD=logstat";
   Connection con = DriverManager.getConnection(url, "logstat","logstat");
      /*TimesTenDataSource ds = new TimesTenDataSource();
    ds.setUrl(url);
    Connection con = ds.getConnection();
   */
   PreparedStatement  pstmt = null;
   //oracle.jdbc.OraclePreparedStatement pstmt = null;
  
    String sql = "{call p_batch_insert(?)}";
   
   pstmt = con.prepareCall(sql);
   //pstmt =(OraclePreparedStatement) con.prepareCall(sql);
   Object[][]  object1=new Object[100][3];
  for ( int i=0;i<100;i++){
   object1[i][0]=new Long(i); 
   object1[i][1]=new java.sql.Date(new java.util.Date().getTime());
   String str = "this is a test"+i;
   object1[i][2]= str;
  } 
   
    oracle.sql.ArrayDescriptor desc = oracle.sql.ArrayDescriptor.createDescriptor("ARRAY_OBJECT",con);
   oracle.sql.ARRAY array = new oracle.sql.ARRAY(desc,con,object1);
  
   pstmt.setArray(1, array);
   pstmt.executeUpdate();
   //pstmt.executeBatch();
    //con.commit();
    //con.setAutoCommit(true);
  } catch (Exception e) {
   e.printStackTrace();
   //System.out.println(e.toString());
  }
 }
}
我們也可以在存儲過程中做一些其它邏輯運算,速度要提高不少。
 
備注:如果在入庫的過程中發(fā)現(xiàn)字符串的值沒有入進去,請檢查有沒有加載該類庫nls_charset12.jar
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
postgresql數(shù)據(jù)類型與jdbc、java類型對應
java 實現(xiàn)往oracle存儲過程中傳遞array數(shù)組類型的參數(shù)
oracle flashback閃回功能之--恢復存儲過程篇
Oracle包被鎖定的原因分析及解決方案
oracle數(shù)據(jù)庫提示錯誤[Err] ORA
關(guān)于oracle PL/SQL存儲過程 PLS-00905 object is invalid,statement ignored問題的解決
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服