我正在尝试将数据导入两个表,但无法导入第二个表。我按照在线指示进行操作,但我不知道错误在哪里,
我的CTL文件是,
-- THIS IS TO LOAD DATA INTO EMPTY TABLE
LOAD DATA
INFILE "C:\Component Folder\POWERHOUSEASSYLIST.csv"
BADFILE "POWERHOUSEASSYLIST.bad"
DISCARDFILE "POWERHOUSEASSYLIST.dsc"
INSERT INTO TABLE "MASTER_DRAWING"
FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(
HEAD_MARK,
QTY,
COMP_TYPE,
PROFILE,
SURFACE,
WEIGHT,
REV_DATE "SYSDATE",
REV_NO "1"
)
INTO TABLE "FABRICATION"
FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(
HEAD_MARK,
MARKING "0",
CUTTING "0",
ASSEMBLY "0",
WELDING "0",
DRILLING "0",
FINISHING "0",
REV_DATE "SYSDATE",
ID "1"
)
答案 0 :(得分:1)
使用多个INTO TABLE子句时的一个关键点是,当处理新的INTO TABLE子句时,字段扫描将从它停止的位置继续。
您尚未显示样本数据。但我认为它可能看起来像这样。
a;b;c;d;e;f;g;h;
1;2;3;4;5;6;7;8;
数据文件中只有8列,表MASTER_DRAWING也有8列。一旦扫描到最后一列并加载数据 MASTER_DRAWING,而不是到达行的开头,它从停止的地方继续。但是在第8列之后没有数据,因此没有加载任何数据 到FABRICATION表。
您可以通过将数据文件中的少数记录更改为包含8列以上来验证这一点。在这种情况下,第九列将插入INTO 制作表。
作为另一种方法,您可以使用sqlloader仅加载MASTER_DRAWING,然后使用简单的insert ... select语句来获取HEAD_MARK 从MASTER_DRAWING到FABRICATION表。
insert into FABRICATION
select HEAD_MARK, 0, 0, 0, 0, 0, 0, sysdate, 1
from MASTER_DRAWING;