【问题标题】:Oracle Insert into partition binding the partition name in JDBCOracle Insert into partition 绑定 JDBC 中的分区名称
【发布时间】:2013-05-29 08:28:44
【问题描述】:

我正在使用 JDBC 将大量数据插入到表的不同分区中。该表是系统分区的,这意味着我需要在插入语句中提供分区名称。

INSERT INTO T Partition P values (...);

我使用准备好的语句来绑定插入语句的值,现在我想知道是否也可以绑定分区名称,因为我不知道需要插入哪个分区,直到我看到实际数据。

【问题讨论】:

  • 你试过了吗?错误信息是什么?
  • 我猜你不能因为你不能绑定表名的同样原因。你必须使用字符串连接。
  • 与使用准备好的语句相比,是否会使用字符串连接来插入更大的性能损失?我真的有一个庞大的数据集需要插入。

标签: java oracle jdbc partitioning


【解决方案1】:

在标准 Oracle 分区方案中,您无需在 INSERT 语句中提供分区名称。 Oracle分区的目标之一是application-transparent

从应用程序的角度来看,只存在一个模式对象。 DML 语句无需修改即可访问分区表。

在语句中提供分区是例外,而不是规则:Oracle 足够聪明,可以将行插入到正确的分区中。

但是,System Partitioning 要求您提供分区名称。

很遗憾,您不能使用绑定变量动态指定分区名称,因为分区名称是对象名称,因此需要在解析语句时知道。

我建议您使用 N 准备好的语句,其中 N 是插入的分区数。 N 是您需要的最少语句数。

【讨论】:

  • 系统分区没有分区键,作为系统分区表,所有分区相关操作都必须提供分区名称。
  • @wudong 我不知道这个新的分区方案。在 Oracle 中总能学到一些东西!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多