在SQL Loader中使用Oracle序列?
问题描述:
我在SQL Loader控制文件中使用SEQUENCE
关键字来生成主键。但对于特殊场景,我想在控制文件中使用Oracle sequence
。 Oracle documentation for SQL Loader没有提到任何有关它。 SQL Loader支持它吗?在SQL Loader中使用Oracle序列?
答
我不这么认为,但您可以通过插入触发器分配序列,除非这是直接路径加载。
答
我已经成功地使用了序列从我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
只会显示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
谢谢@ REW。我没有使用直接路径加载。 – Sujee 2010-06-27 03:44:55