我有1000个加载文件,我知道我们可以将多个文件加载到一个表中,如下所示:
LOAD DATA
INFILE file1.txt
INFILE file2.txt
APPEND
INTO TABLE emp
( empno POSITION(1:4) INTEGER EXTERNAL,
ename POSITION(6:15) CHAR,
deptno POSITION(17:18) CHAR,
mgr POSITION(20:23) INTEGER EXTERNAL
)
但我的问题是:我想将 file1.txt 的数据插入到emp表中,其中包含一些常量值“Cons1”并且具有一些不同的常量值文件 file2.txt 的“Cons2”。
我真的很喜欢这个并且在网上做了很多尝试。非常感谢你们的帮助。
LOAD DATA
INFILE file1.txt
APPEND
INTO TABLE emp
( empno POSITION(1:4) INTEGER EXTERNAL,
ename POSITION(6:15) CHAR,
deptno POSITION(17:18) CHAR,
mgr POSITION(20:23) INTEGER EXTERNAL,
**ConstColumn constant "Cons1"**
)
INFILE file2.txt
APPEND
INTO TABLE emp
( empno POSITION(1:4) INTEGER EXTERNAL,
ename POSITION(6:15) CHAR,
deptno POSITION(17:18) CHAR,
mgr POSITION(20:23) INTEGER EXTERNAL,
**ConstColumn constant "Cons2"**
)
答案 0 :(得分:0)
SQL * Loader只是从所有文件中获取输入,就像它们是一个文件一样,仍将所有行视为来自一个文件。每个文件都必须有一个标识列,指示它来自哪个文件,然后您将使用多个WHEN子句键入该文件。有1000个文件,如果文件确实相同并且不具备该结构,那么任务似乎令人生畏。无论如何,维护该控制文件将是一场噩梦。
您可以使用占位符为常量创建一个骨架控件文件,然后编写一个包装器程序,该程序将遍历文件夹中的文件,并为每个文件复制骨架并用所需的常量文本替换占位符,然后调用SQL * Loader,使用命令行参数传递文件名并使用该控制文件。
让我们知道你最终是如何解决这个问题的。