sybase大数据量插入性能怎么样?怎么样提高呢?

Armstrong刘-大壮 2020-07-21 05:51:00
我目前在做的需求是需要把后台生成的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怎么写,怎么优化。
...全文
524 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
使用bcp直接导入csv文件到sybase数据库。-t参数指定逗号分隔符。
  • 打赏
  • 举报
回复
老哥 我用的是jdbc,网上找的jar包jconn4,具体ENABLE_BULK_LOAD怎么打开呢,最好能加个好友
EisenWang 2020-07-22
  • 打赏
  • 举报
回复
看错了,你这个不是jdbc的。
那更简单,使用bcp功能呗,用-t指定列分隔符为,即可
EisenWang 2020-07-22
  • 打赏
  • 举报
回复
很简单,判断之后用PreparedStatment的addBatch功能,最后一起 PreparedStatement.executeBatch()批量插入。
同时,注意打开jdbc connection的ENABLE_BULK_LOAD,然后注意控制一下每个batch的条数总数不要超过5000, jdbc7.07或16.0之后可以到20000,效果最好

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧