2010-05-04 44 views
1

我有一個自備的CSV文件的幾個PostgreSQL的表,我想導入到Oracle數據庫具有匹配模式的轉儲。我發現了一些關於如何將數據從一個CSV「表格」分發到多個Oracle表格的文章,但是我的問題是同一個文件中有幾個不同的CVS「表格」。加載多個鏈接的CSV文件到Qracle與SQLLDR

是否可以指定表分離器或在某種程度上標誌着一個SQLLDR控制文件的新表,或做我必須手動分割文件餵養它SQLLDR過嗎?

回答

3

這取決於您的數據。你如何確定一行的目的地是哪一個?如果您可以根據行中的數據確定哪個表格,那麼使用WHEN很容易。

LOAD DATA 
    INFILE bunchotables.dat 
INTO TABLE foo WHEN somecol = 'pick me, pick me' (
    ...column defs... 
) 
INTO TABLE bar WHEN somecol = 'leave me alone' (
    ... column defs 
) 

如果你有某種標題行確定的目標表,那麼你將不得不將它的手之前,其他實用程序拆分。

+0

+1這應該做到這一點。 – DCookie 2010-05-04 17:22:43

+0

是的,這聽起來不錯 - 像這樣的東西也適用於表之間的單個標記?我得到的格式如下所示: COPY foo(foo_1,foo_2)FROM stdin; \。 COPY bar(bar_1,bar_2)FROM stdin; \。 – VolkA 2010-05-04 18:31:42

+0

不,正如我所說,SQLLDR是不會處理表之間的單一標記。你需要寫一個Perl/Python的/紅寶石/不管腳本掃描您的源文件並把它們分成每桌1個文件。這應該很容易做到。但是你沒有給我們足夠的信息來幫助你。 – 2010-05-04 18:53:54