Oracle10g 在SQL加载器中使用Oracle序列?
我在SQL加载器控制文件中使用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'
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。我没有使用直接路径加载。您必须将尾随空列添加到控制文件中。您必须将尾随空列添加到控制文件中。