2015-05-27 21 views
0

我有1000個加載文件,我知道我們可以將多個文件加載到一個表像這樣的不同數值的一個表:

將數據加載到使用單一的CTL文件SQL加載

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」,並與一些不同的恆定值「Cons2」的文件FILE2.TXT

我真的堅持到這一點,並嘗試了這麼多的net.any幫助真的非常感激

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

使用SQL * Loader只需要從所有文件輸入,好像他們是一個文件,還是把所有行就好像它們來自一個文件一樣。每個文件必須有一個標識列來指示它來自哪個文件,然後使用多個WHEN子句鍵入該文件。對於1000個文件,如果文件確實是相同的並且不具有該結構,則該任務似乎令人生畏。無論如何,保持該控制文件將是一場噩夢。

您可以用常量的佔位符創建一個框架控制文件,然後編寫一個包裝程序,該程序將遍歷文件夾中的文件,併爲每個文件複製骨架並用所需的常量文本替換佔位符,然後調用SQL * Loader,使用命令行參數傳遞文件名並使用該控制文件。

讓我們知道你最終如何解決這個問題。

+0

Gary,你可以爲常量和包裝器的佔位符添加一些引用鏈接嗎? –

+0

看到這個以前的帖子,我進一步解釋:https://stackoverflow.com/questions/27250002/insert-timestanp-of-infile-into-a-column-from-sqlloader/27280827#27280827 –

相關問題