在SQL Loader中使用Oracle Sequence?

时间:2010-06-15 10:50:53

标签: oracle10g sql-loader

我在SQL Loader控制文件中使用SEQUENCE关键字来生成主键。但是对于特殊情况,我想在控制文件中使用Oracle sequenceOracle documentation for SQL Loader没有提及任何相关内容。 SQL Loader是否支持它?

3 个答案:

答案 0 :(得分:2)

我已成功使用Oracle 10g database中的序列在sqlldr运行期间填充主键字段:

这是我的data.ctl:

LOAD DATA
INFILE 'data.csv'
APPEND INTO TABLE my_data
FIELDS TERMINATED BY ','
(
  ID "MY_SEQUENCE.NEXTVAL",
  name char
)

和我的data.csv:

-1, "dave"
-1, "carol"
-1, "tim"
-1, "sue"

出于某种原因,您必须在CSV文件中放置一个虚拟值,即使您认为sqlldr只是想知道您想要使用序列。

答案 1 :(得分:2)

通过将序列切换为最后一列,我设法加载而不使用虚拟,如下所示:

LOAD DATA
INFILE 'data.csv'
APPEND INTO TABLE my_data
FIELDS TERMINATED BY ','
(
    name char,
    ID "MY_SEQUENCE.NEXTVAL"
)

和data.csv就像:

"dave"
"carol"
"tim"
"sue"

答案 2 :(得分:1)

我不这么认为,但您可以通过插入触发器分配序列,除非这是直接路径加载。