1、表test_member結構是 name,code,department
2、dept1.txt檔案的內容是:
技術部
張三;2013123
李四;2013234
王五;2013345
dept2.txt檔案的內容是:
采購部
陳六;2013123
趙七;2013234
孫八;2013345
3、我的想法是,在ctl控制檔案中,用類似case when的條件判斷來實作,表中的department根據不同txt賦不同值,類似這樣:
load data
characterset al32utf8
infile "D:\dept1.txt"
infile "D:\dept2.txt"
into table test_member(
name terminated by ';',
code terminated by whitespace
department constant ( case when infile="D:\dept1.txt" then "技術部" when infile="D:\dept2.txt" then "采購部" else "" end)
)
上面這個case when是我瞎猜的,所以請大神幫忙看看,我想實作sqlldr根據不同的infile如何對表欄位賦不同的默認值,改如何實作?如果我這種case when的想法可行,那控制檔案該如何撰寫呢?
uj5u.com熱心網友回復:
沒有發現這樣的選項,不過以下兩個方法,你參考一下1、寫多個 控制檔案,分開匯入
2、把多個檔案加工一下,合并到一個檔案中;
uj5u.com熱心網友回復:
謝謝幫忙出主意。
我的txt檔案比較多 有上百個,一個txt一個控制檔案,控制檔案我也要寫上百個。
我跟你的第2個方法想法差不多,現在卡在這了,我想通過批處理,把每個txt檔案中,每行的最右側拼接上第一行的內容。例如把每個txt由下面這個格式:
技術部
張三;2013123
李四;2013234
王五;2013345
通過批處理弄成這個樣式:
技術部;技術部
張三;2013123;技術部
李四;2013234;技術部
王五;2013345;技術部
現在就是不知道這個批處理改怎么寫
uj5u.com熱心網友回復:
應該是這個 ,樓主先研究一下FOR /F %%i IN (file) DO command
uj5u.com熱心網友回復:
上百個這么夸張
那應該是程式生成的吧。
如果是少量檔案的話可以考慮先把分號改成逗號,改成csv檔案格式,打開,添加一列部門列,改成txt檔案格式,再以txt打開,將逗號改成分號。
都是寫手工活。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/103440.html
標籤:開發
