Oracle10g 在SQL加载器中使用Oracle序列?

Oracle10g 在SQL加载器中使用Oracle序列?,oracle10g,sql-loader,Oracle10g,Sql Loader,我在SQL加载器控制文件中使用SEQUENCE关键字来生成主键。但是对于一个特殊的场景,我想在控制文件中使用Oracle序列。警察没有提到这件事。SQL Loader支持它吗?我不这么认为,但是您可以通过on insert触发器分配序列,除非这是直接路径加载。我不这么认为,但您可以通过插入时触发器分配序列,除非这是直接路径加载。我已成功使用我的Oracle 10g数据库中的序列在sqlldr运行期间填充主键字段: 这是我的data.ctl: LOAD DATA INFILE 'data.csv'

我在SQL加载器控制文件中使用
SEQUENCE
关键字来生成主键。但是对于一个特殊的场景,我想在控制文件中使用
Oracle序列
。警察没有提到这件事。SQL Loader支持它吗?

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

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

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

这是我的data.ctl:

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

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

出于某种原因,您必须在CSV文件中输入一个伪值,即使您认为
sqlldr
只会发现您想要使用一个序列。

我已成功使用我的
Oracle 10g数据库中的一个序列来填充
sqlldr
运行期间的主键字段:

这是我的data.ctl:

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

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

出于某种原因,您必须在CSV文件中输入一个伪值,即使您认为
sqlldr
只会发现您想要使用一个序列。

我通过将序列切换为最后一列来加载,而不使用伪值,如下所示:

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"

通过将序列切换为最后一列,我成功地在不使用虚拟对象的情况下加载,如中所示:

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"

谢谢@REW。我没有使用直接路径加载。谢谢@REW。我没有使用直接路径加载。您必须将
尾随空列添加到控制文件中。您必须将
尾随空列添加到控制文件中。