我正在处理的项目是将PrestoDB与Oracle和MongoDB结合使用。 使用Oracle中的PrestoDB连接,需要在Oracle中插入大量记录(约5000条)。
我不希望它提交每一行以具有更好的性能,但是如果我将autocommit设置为false,它将返回异常:
java.sql.SQLException:查询失败(#20180831_130756_00032_945ft): 目录oracle仅支持在以下位置使用自动提交进行写入 com.facebook.presto.jdbc.PrestoResultSet.resultsException(PrestoResultSet.java:1803) 在 com.facebook.presto.jdbc.PrestoResultSet.getColumns(PrestoResultSet.java:1747) 在 com.facebook.presto.jdbc.PrestoResultSet。(PrestoResultSet.java:118) 在 com.facebook.presto.jdbc.PrestoStatement.internalExecute(PrestoStatement.java:246) 在 com.facebook.presto.jdbc.PrestoStatement.execute(PrestoStatement.java:225) 在 com.facebook.presto.jdbc.PrestoPreparedStatement.executeLargeUpdate(PrestoPreparedStatement.java:104) 在 com.facebook.presto.jdbc.PrestoPreparedStatement.executeUpdate(PrestoPreparedStatement.java:97)
原因:com.facebook.presto.spi.PrestoException:仅目录oracle 支持在以下位置使用自动提交进行写入 com.facebook.presto.transaction.TransactionManager $ TransactionMetadata.checkConnectorWrite(TransactionManager.java:446) 在 com.facebook.presto.transaction.TransactionManager.checkConnectorWrite(TransactionManager.java:222) 在 com.facebook.presto.transaction.TransactionManager.getCatalogMetadataForWrite(TransactionManager.java:200) 在 com.facebook.presto.metadata.MetadataManager.getCatalogMetadataForWrite(MetadataManager.java:957) 在 com.facebook.presto.metadata.MetadataManager.getInsertLayout(MetadataManager.java:574) 在 com.facebook.presto.sql.planner.LogicalPlanner.createInsertPlan(LogicalPlanner.java:290) 在 com.facebook.presto.sql.planner.LogicalPlanner.planStatementWithoutOutput(LogicalPlanner.java:184) 在 com.facebook.presto.sql.planner.LogicalPlanner.planStatement(LogicalPlanner.java:171) 在 com.facebook.presto.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:144) 在 com.facebook.presto.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:139) 在 com.facebook.presto.execution.SqlQueryExecution.doAnalyzeQuery(SqlQueryExecution.java:344) 在 com.facebook.presto.execution.SqlQueryExecution.analyzeQuery(SqlQueryExecution.java:329) 在 com.facebook.presto.execution.SqlQueryExecution.start(SqlQueryExecution.java:285) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748)
是否有可能(可能是自定义插件)来实现所需的部分,还是有人知道这是否是PrestoDB实现的选择?
有人遇到过类似的需求吗?