2017-04-05 37 views
0

我需要將一個dashdb數據庫中的某些表複製到單獨的dashdb數據庫中。通常情況下,我會從一個CSV文件導出並使用Web控制檯將其加載到另一個文件中,但一個表格特別具有CLOB列,因此我們需要導出到一個ixf + lob文件,然後導入它。不幸的是,我看不到任何簡單的方法來做到這一點,因爲它看起來像clpplus只能導出到數據庫所在的服務器(我無法訪問),我看不到任何方式來獲取它導出lob文件。有誰知道如何做到最好?如何從dashdb導出IXF和LOB文件

回答

0

如果CLOB值實際上小於32K,則可以嘗試將它們轉換爲VARCHAR值,作爲您提供給EXPORT的SELECT語句的一部分。

如果您確實需要導出LOB文件,您可以將它們寫入dashDB實例中的用戶主目錄,然後使用/ home REST API來下載文件,例如捲曲:https://developer.ibm.com/static/site-id/85/api/dashdb-analytics/

0

另一種方法是將包含LOB的表導出到本地機器,然後導入到另一個dashDB中。

將dashDB表導出到本地客戶端的一種方法是在客戶端計算機上的DB2命令行處理器(CLP)中運行EXPORT命令。要做到這一點,你需要安裝IBM數據服務器運行時客戶端,然後目錄你dashDB數據庫中的客戶端,就像這樣:

CATALOG TCPIP NODE mydash REMOTE dashdb-txn-small-yp-lon02-99.services.eu-gb.bluemix.net SERVER 50000; 
CATALOG DATABASE bludb AS dash1 AT NODE mydash; 
CONNECT TO dash1 USER <username> USING <password>; 

現在,讓我們的出口被稱爲「MYTABLE」的表,以便LOB列寫入單獨的文件:

export to mytable.del of del 
     lobfile mylobs 
     modified by lobsinfile 
     select * from mytable; 

此導出命令生成文件mytable.del和mylobs.001.lob。文件mytable.del包含指向文件mylobs.001.lob的指針,指定每個值的偏移量和長度。

如果LOB數據太大而無法放入單個文件,則會創建其他文件mylobs.002.lob,mylobs.003.lob等。

請注意,導出的數據將以未壓縮的形式從dashDB發送到本地客戶端,這可能需要一些時間,具體取決於數據量。


如果.DEL和.LOB文件駐留在客戶端機器上,如筆記本電腦或本地服務器,您可以使用IMPORT命令將這些文件攝取入表LOB列。在CLP中,您首先會連接到要加載到的dashDB數據庫。

我們假設原始表已導出到文件mytable.del和mylobs.001.lob,並且這些文件現在位於客戶端計算機的目錄/ mydata中。然後,該命令將數據和LOB的加載到目標表:

IMPORT FROM /mydata/mytable.del OF DEL 
    LOBS FROM /mydata 
    MODIFIED BY LOBSINFILE 
    INSERT INTO mytable2; 

這IMPORT命令可以在客戶機上的DB2命令行處理器上運行。