sqlldr使用一个控制文件将多个文件插入到多个表中

问题描述:

我可以使用一个控制文件将数据从多个文件插入到多个表中吗?像:sqlldr使用一个控制文件将多个文件插入到多个表中

load data 
INFILE 'C:\Users\shu37\Desktop\emp.csv' 
INTO TABLE Emp 
TRUNCATE 
FIELDS Terminated By ',' OPTIONALLY ENCLOSED BY '"' 
(EmpId,EmpName) 
INFILE 'C:\Users\shu37\Desktop\dept.csv' 
INTO TABLE department 
TRUNCATE 
FIELDS Terminated By ',' OPTIONALLY ENCLOSED BY '"' 
(DId,DName) 

我有一个500桌,我想从一个同样数量的CSV(每表一个CSV)导入数据,我不能写500个控制文件。

即使我写了我需要一个上标来在一个循环中运行所有500个控制文件,这似乎有点低效。

我确定应该有办法用SQLDLR来做到这一点。

任何想法?

不,我相信你需要数据泵导出/导入工具,而不是: http://docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm

仅供参考这里的SQLLOADER参考: http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_control_file.htm

或者,如果你能得到命名为表中的数据文件,你可以编写一个程序为每个文件/表和一个主SQL文件生成控制文件来调用它们,但这可能会变得很难看。