如何提高 SQLLDR 性能?

How to improve SQLLDR performance?

我正在尝试通过 sqlldrcsv 文件上传到 Oracle 服务器以实现我的批处理文件自动化。使用 sqlldr 将文件上传到 Oracle 服务器需要太多时间。通过批处理,它在一分钟内上传 2100 行。当我尝试直接从 Oracle SQL Developer 的 csv 文件导入数据时,它在一分钟内需要 10 万行。

这是我的 .ctl 文件:

OPTIONS(SKIP=1)                                                               
LOAD DATA                                                                              
INFILE "D:\TestBackup\Event.csv"                                 
INSERT into table EVENT                                                         
APPEND                                                                            
fields terminated by ',' OPTIONALLY ENCLOSED BY '"'                             
TRAILING NULLCOLS        
(BRANCH_ID,TOTAL_SALES,TOTAL_LOST_SALES,TOTAL_INVENTORY,INSERTDATE sysdate
 )

这是我的 .bat 文件:

sqlldr abc123@test/demo1 DATA='D:\Event.csv"      
CONTROL=D:\Insert.ctl LOG=Insert.log BAD=Insert.bad                                     

如何提高性能?

您可以使用 alter table 语句在加载期间关闭 table 上的日志记录。看看使用和不使用日志记录的区别会很有趣。 table 是否也有可以暂停的触发器?也许在加载之前删除索引并在加载之后重新创建而不是在加载期间更新它们?

只是抛出一些可能会加快速度的想法。请报告什么,如果有的话,有效。期待看到最大的好处。