在SQL Loader中使用Oracle序列?

问题描述:

我在SQL Loader控制文件中使用SEQUENCE关键字来生成主键。但对于特殊场景,我想在控制文件中使用Oracle sequenceOracle documentation for SQL Loader没有提到任何有关它。 SQL Loader支持它吗?在SQL Loader中使用Oracle序列?

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

+0

谢谢@ REW。我没有使用直接路径加载。 – Sujee 2010-06-27 03:44:55

我已经成功地使用了序列从我Oracle 10g databasesqlldr运行期间来填充主键字段:

这里是我的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只会显示o你想用一个序列。

我设法在不使用虚拟通过开关的顺序是最后一列中加载:

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" 
+0

您必须将'TRAILING NULLCOLS'添加到控制文件中。 – broeni 2017-12-22 07:26:09