我在直接加载模式下使用 sql loader。我需要在加载的字段之一中使用序列。
直接加载不允许使用 Oracle SEQUENCE.nextval 实体。
有一个使用序列函数 SEQUENCE(MAX,1) 的选项,但它的问题是:
- 随着表变大并花费更多时间来找到最大值
- 无法设置序列的起始值(在我的情况下,序列与其他对象共享,这就是我想使用 SEQUENCE.nextval 的原因)
我有哪些选择?
也许可以在控制文件中定义一种具有起始值的计数器,并且增加的值将用于序列?
更新
可以使用 SEQUENCE(n,1) - 其中 n 是起始编号。
但是当我多次调用 sqlloader 时,每次提供不同的 n 时,每次运行都需要比上一次运行更多的时间来完成。
我不明白为什么!