【发布时间】:2017-03-31 14:34:05
【问题描述】:
我需要使用 SQL* Loader 将数据加载到带有 GENERATE ALWAYS AS IDENTITY 的 Oracle 表中
CREATE TABLE tbl_identity
(
col1 NUMBER(10,0) GENERATED ALWAYS AS IDENTITY(START WITH 7 INCREMENT BY 1) NOT NULL,
col2 VARCHAR2(20)
);
但是当我尝试在这个表中加载数据时,我得到一个错误
ORA-32795: cannot insert into a generated always identity column
也许 SQLLDR 中有任何选项可以跳过 IDENTITY 一段时间?
或者有什么想法可以使用 SQLLDR 将数据加载到 GENERATED ALWAYS IDENTITY 列中?
SQLLDR 命令
sqlldr userid=user/passw@TNS control=tbl_identity.ctl log=tbl_identity.log rows=1000 readsize=65535 bindsize=65535
CTL 文件
OPTIONS(direct=false)
LOAD DATA
INFILE 'tbl_identity.txt'
INTO TABLE tbl_identity
INSERT
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(col1,
col2)
【问题讨论】:
-
忽略该列并加载其他列。你能显示 sql 加载器脚本吗?
-
但是如果我有这样的东西
1 'one'2 'two'4 'four'如果我忽略第一列,它会加载我不正确的数据这是SQLLDR命令sqlldr userid=user/passw@TNS control=tbl_identity.ctl log=tbl_identity.log rows=1000 readsize=65535 bindsize=65535 -
我觉得你应该把tbl_identity.ctl的内容贴出来
-
OPTIONS(direct=false) LOAD DATA INFILE 'tbl_identity.txt' INTO TABLE tbl_identity INSERT FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS (col1, col2)
标签: sql oracle identity sql-loader