我在SQL Loader控制文件中使用SEQUENCE
关键字来生成主键。但对于特殊情况,我想在控制文件中使用Oracle sequence
。 Oracle documentation for SQL Loader没有提到任何关于它的事情。 SQL Loader是否支持它?
我不这么认为,但您可以通过插入触发器分配序列,除非这是直接路径加载。
我已成功使用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
只是想知道你想要使用一个序列。
通过将序列切换为最后一列,我设法加载而不使用虚拟,如下所示:
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"