oracle一次取多个序列,一次性獲取多個oracle序列的值,實現關聯表多數據的批量insert...

maven/Java/web/bootstrap/dataTable/app開發QQ群:566862629。希望更多人一起幫助我學習。

業務 要求批量導入不小於10W條數據到 user 表,但是user表在 insert  每條數據的同時要  insert  一條對應數據到 customer表,

並且是以  customer  表的主鍵作為 user 表的外鍵。

所以想到要一次性獲取多個 序列值,再把對應的序列給不同表,並分別作為兩個表的主鍵和外鍵的值。

方法很簡單  就一句代碼 :

String squence ="select USR_CUSTOMER_SEQ.nextval cust_id from (select 1 from all_objects where rownum <= "+usrlist.size()+")";

List squenceList = BatchInsert.selectSql(squence);

usrlist 是解析表格后得到的要導入的 user數據 集合,有多少條數據就取多少個序列值。

selectSql 方法 只是JDBC連接數據庫 執行了這句SQL 並返回了查到的 序列值,拿到這個序列集合就可以根據業務作后續實現了。

// 單純查詢

public static List selectSql(String sql){

Connection conn = null;//定義為空值

Statement stmt = null;

ResultSet rs = null;

conn = getConnection();

List list = new ArrayList();

try {

stmt = conn.createStatement();//創建一個Statement語句對象

rs = stmt.executeQuery(sql);//執行sql語句

while(rs.next()){

list.add(rs.getString("cust_id"));

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

try {

conn.close();

stmt.cancel();

rs.close();

}catch (SQLException e) {

e.printStackTrace();

}

}

return list;

}

getConnection 方法是獲取數據庫連接:

public static Connection getConnection(){ //連接數據庫的方法

try {

Class.forName("oracle.jdbc.driver.OracleDriver"); //初始化驅動包

conn = DriverManager.getConnection(url, user, password);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值