1問題:我試圖加載test1.csv,test2.csv和test3.csv到表1,表2和表3分別使用SQLLDR。如果知道這方面的知識,請耐心等待,如果在.ctl文件中定義這個問題時我無法完全理解,只有我能想到的是下面的代碼,但這是不正確的。所以我的問題是我怎麼能做到這一點或者這是可能的?SQLLDR - 如何加載多個CSV到multple表
OPTIONS (SKIP=1)
LOAD DATA
INFILE 'test1.csv'
INFILE 'test2.csv'
INFILE 'test2.csv'
TRUNCATE
INTO TABLE table1
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Col1 "TRIM(:Col1)",
Col2 "TRIM(:Col2)"
)
INTO TABLE table2
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Colx "TRIM(:Colx)",
Coly "TRIM(:Coly)"
)
INTO TABLE table3
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
Colp "TRIM(:Colp)",
Colq "TRIM(:Colq)"
)
第二個問題:這是第一個問題的替代方案。由於我無法弄清楚第一個問題,我所做的就是將每個表的負載拆分爲多個.ctl文件,並將這三個文件全部調用到.bat文件中。這至少起作用,但我的問題是有沒有辦法在會話中處理所有這3個.ctl文件,而不提及用戶/密碼3次?
sqlldr userid=user/[email protected] control=test1.ctl
sqlldr userid=user/[email protected] control=test2.ctl
sqlldr userid=user/[email protected] control=test3.ctl
是否已經存在或可以在數據中添加一個指示器字段,用於鍵入數據應該發送到哪個表上? –
我沒有使用任何列作爲區分數據的關鍵,但我可以通過添加密鑰進行嘗試。 – Chito