当前位置: 代码迷 >> 综合 >> 数据库插入海量数据(10万+)的实现和注意事项
  详细解决方案

数据库插入海量数据(10万+)的实现和注意事项

热度:69   发布时间:2023-10-23 13:27:33.0

java和数据库在我的理解中是处理数据的两个层级

java处理业务逻辑,一些数据在java中处理是很耗内存的,jvm很容易溢出,比如插入上万条数据,for循环处理,批量插入,虽然sql是一条,但是for循环次数太多,jvm就撑不住了,(for最好处理千以下的)

for循环的操作完全可以在数据库中执行,相比java中处理是极快速的

比如:

插入海量数据的sql示例

INSERT INTO VAT_STOC_INVOICE (FPH, INVOICE_CATAGORY, INVOICE_CODE, INVOICE_NO, PURCHASE_ID, SALESUNIT_CODE,DEPOT_ID, POINT_ID, F_STATE, UPDATE_TIME)SELECT #{invoiceCode } || lpad( to_number(#{invoiceNo}) + n - 1, 8, '0' ),
#{invoiceCatagory},#{invoiceCode},lpad( to_number(#{invoiceNo}) + n - 1, 8, '0' ),
#{purchaseId,jdbcType=NUMERIC},#{salesunitCode},#{depotId},#{pointId,jdbcType=NUMERIC},、
#{fState},SYSDATEFROM (select rownum n from dual connect by rownum <= #{longValue,jdbcType=NUMERIC})

最关键的就是最后一句,longvalue是传入的数据量,测试过10万条数据sql也仅需4s,