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

时间:2015-09-04 16:14:35

标签: sql-loader bulk import-from-csv

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

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做到这一点。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

不,我相信您需要数据泵导出/导入功能: 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文件来调用它们,但这可能会变得很难看。