可以换个思路。 先在数据库中建立一个与目标表(假设为A)结构一样的表B。然后使用PL/SQL将excel中的数据一次性导入到表B中。然后对A, B表进行Merge操作。 可以参考下在的Merge语句来编写你的Merge语句CREATE TABLE T124 ( ID NUMBER(4), F1 VARCHAR2(20), F2 VARCHAR2(20) ); INSERT INTO T124 VALUES(1, 'A', 'AA'); INSERT INTO T124 VALUES(2, 'B', 'BB'); INSERT INTO T124 VALUES(3, 'C', 'CC');MERGE INTO T124 t1 USING T125 t2 ON (t1.ID = t2.ID) WHEN MATCHED THEN UPDATE SET t1.F1 = t2.F2, t1.F2 = t2.F2 WHEN NOT MATCHED THEN INSERT VALUES(t2.ID, t2.F1, t2.F2)
先在数据库中建立一个与目标表(假设为A)结构一样的表B。然后使用PL/SQL将excel中的数据一次性导入到表B中。然后对A, B表进行Merge操作。
可以参考下在的Merge语句来编写你的Merge语句CREATE TABLE T124
(
ID NUMBER(4),
F1 VARCHAR2(20),
F2 VARCHAR2(20)
);
INSERT INTO T124 VALUES(1, 'A', 'AA');
INSERT INTO T124 VALUES(2, 'B', 'BB');
INSERT INTO T124 VALUES(3, 'C', 'CC');MERGE INTO T124 t1
USING T125 t2
ON (t1.ID = t2.ID)
WHEN MATCHED THEN
UPDATE SET t1.F1 = t2.F2,
t1.F2 = t2.F2
WHEN NOT MATCHED THEN
INSERT VALUES(t2.ID, t2.F1, t2.F2)
C:\Windows\System32>rd F:\oetdir
C:\Windows\System32>mkdir F:\oetdir
SQL> create directory testoetdir as 'F:\oetdir';
SQL> grant read on directory testoetdir to user_name;
SQL> grant write on directory testoetdir to user_name;
SQL> edit oet01.sql
写入如下内容:
create table OET01
(
c1 VARCHAR2(30),
c2 NUMBER(8),
.....
)
organization external
(
type ORACLE_LOADER
default directory TESTOETDIR
access parameters
(
records delimited by newline
fields terminated by ' '
)
location (TESTOETDIR:'oet01.txt')
);
SQL> @oet01.sqlSQL> select * from oet01;
.....
.....
.....