据我所知,LOAD 语句仅限于与 INSERT 语句一起使用。我很确定有很多方法可以做到这一点,我会建议两种方法:
在这两种情况下,仅支持 >= 11.50 的数据库版本,并且具有某些限制,例如:
- 仅当两个表具有 1 对 1 关系时,合并才有效
- 外部表仅限于数据库服务器文件系统,不会访问客户端计算机上的任何内容
建议 1
加载到临时表中,然后使用MERGE语句。
create temp table tp01 ( cols.... ) with no log ;
load from xyz.txt insert into tp01 ;
merge into destTable as A
using tp01 as B
ON A.empID = B.empID
WHEN MATCHED THEN UPDATE SET status = 'N'
WHEN NOT MATCHED THEN INSERT (empid, status) values ( b.empid, 'N');
drop table tp01;
建议 2
为您的 TXT 文件创建一个外部表,然后在需要时使用此表使用 MERGE 或 UPDATE。
create external table ex01 .... using ( datafile('file:/tmp/your.txt'), delimited ...);
merge into destTable as A
using ex01 as B
ON A.empID = B.empID
WHEN MATCHED THEN UPDATE SET status = 'N'
WHEN NOT MATCHED THEN INSERT (empid, status) values ( b.empid, 'N');