我目前在做的需求是需要把后臺生成的csv檔案匯入到sybase資料庫,因為每條資料需要判斷插入得目標表,只能每條讀取了之后插入。我采取的是自己判斷組裝批插入的sql,例如:insert into WG_float_202007 (ObjectId, AttributeId, Seconds, Nanoseconds, Type, ErrorValue, Value) values(527433753,630,1592477964,74700000,'r',0,953.000000) union all (select 527433753,630,1592477924,984800000,'r',0,940.000000) union all (select 527433753,630,1592477864,861200000,'r',0,920.000000) union all (select 527433753,630,1592477937,17500000,'r',0,944.000000) union all (select 527433753,630,1592477894,922500000,'r',0,930.000000) union all (select 527433753,630,1592477855,842200000,'r',0,917.000000)這樣的,我能找到的資料只有這一種批插入得方式,但是速度也不快,每秒最多才2k條,而且一次插入資料過多會報“There is not enough procedure cache to run this procedure, trigger, or SQL batch. Retry later, or ask your SA to reconfigure ASE with more procedure cache.”的錯!我用的是jconnection4,sybase15.7版本,Java工程搞的。請教一下對于幾百萬條資料連續插入需要怎么搞,sql怎么寫,怎么優化。
uj5u.com熱心網友回復:
很簡單,判斷之后用PreparedStatment的addBatch功能,最后一起 PreparedStatement.executeBatch()批量插入。同時,注意打開jdbc connection的ENABLE_BULK_LOAD,然后注意控制一下每個batch的條數總數不要超過5000, jdbc7.07或16.0之后可以到20000,效果最好
uj5u.com熱心網友回復:
看錯了,你這個不是jdbc的。那更簡單,使用bcp功能唄,用-t指定列分隔符為,即可
uj5u.com熱心網友回復:
老哥 我用的是jdbc,網上找的jar包jconn4,具體ENABLE_BULK_LOAD怎么打開呢
,最好能加個好友
uj5u.com熱心網友回復:
使用bcp直接匯入csv檔案到sybase資料庫。-t引數指定逗號分隔符。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/10280.html
標籤:Sybase
