【问题标题】:faster insertion to oracle更快地插入到 oracle
【发布时间】:2013-02-20 02:18:35
【问题描述】:

在 sql server 主机上有一个视图,它有大约 100 列,每 4 小时插入大约 40000 条新记录。 我使用 netbeans 编写了一个 java 应用程序,它首先从 SQL Server 主机读取数据并将其插入到不同主机上的 Oracle 数据库表中。

阅读时间很短,从不超过 20 秒,但插入有时需要超过 10 分钟! 我不能使用批处理,因为如果发生异常我需要继续插入,但是如果我使用批处理,它将在第一个异常后终止。

我怎样才能使这个过程更快?

【问题讨论】:

  • 这没有意义。您不能使用批次,因为如果其中一个批次发生异常,它将停止插入?如果您不使用批处理,它不会在插入期间的第一个异常之后终止吗?
  • 感谢您的回答,我正在使用 try 和 catch 来处理异常,但我搜索了很多它们不适用于批处理
  • 你能发布一个关于你如何执行插入的总结版本吗?不知道为什么你不能记录/处理一批的异常,然后转移到下一批
  • 这需要很长时间,因为我猜你正在逐行插入记录,特别是如果你正在使用 try catch。你所能做的就是优化你的代码。如果您要分析 oracle 服务器,您会发现它一直在“等待客户端”,而不是等待数据库。您可以使用“适当的”集成工具(如 SSIS 或 Oracle 现在销售的任何产品)来加快流程。
  • 您可以使用带有 DML 错误记录的批处理吗?例如:venzi.wordpress.com/2012/11/03/…

标签: java sql-server oracle


【解决方案1】:

您可以在 Oracle 中轻松使用批量处理。只需保存异常。当您的批量操作完成并且至少有 1 个异常时,会引发一个异常,让您有机会处理它们。

有关说明和示例,请参阅Morgans Library 向下滚动到异常。

【讨论】:

    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2018-10-23
    • 2015-12-01
    • 2011-02-22
    • 2016-08-27
    相关资源
    最近更新 更多