2016-08-23 55 views
0

我正在使用DashDB(Bluemix服務),我需要在我的Java代碼中導出表數據。爲此我寫了以下...DashDB - 使用Java導出數據

 String sql = "CALL SYSPROC.ADMIN_CMD(?)"; 
     callStmt1 = conn.prepareCall(sql); 
     query = "export to exportData.IXF of IXF select * from nombres"; 
     callStmt1.setString(1, query);   
     callStmt1.execute();  
     rs1 = callStmt1.getResultSet(); 

但它不工作。文件exportData.ixf不會生成,但我沒有收到任何錯誤代碼。我曾經在DB2上執行過這段代碼。你知道是否可以做我在做DashDB的工作嗎? 如果答案是肯定的。你有什麼建議嗎? 謝謝!!!

+0

你執行它在本地的DB2?如果您擁有權限,則您遠離dashDB並且通常在服務器上創建文件。 –

+0

我也是使用CLPPlus執行的,但是我找不到結果文件的位置。命令是:導出到ixf的myfile.ixf select * from NOMBRES,結果:導出的總行數:5 - 命令成功完成。但是我無法找到文件myfile.ixf。我找不到它創建的位置。 – Macana

+0

CLPPlus也可以遠離服務器。導出始終在服務器上 –

回答

2

EXPORT命令在dashDB中運行並將文件導出到dashDB服務器本地的目錄。所以如果你想使用EXPORT,你需要額外的一步來下載文件。一種方法是在這裏使用REST API:https://developer.ibm.com/clouddataservices/wp-content/themes/projectnext-clouddata/dashDB/(對/ home/...端點的GET調用)。另一種方法是使用CLPPlus IDA命令:https://www.ibm.com/support/knowledgecenter/SS6NHC/com.ibm.swg.im.dashdb.clpplus.doc/doc/r0061925.html

1

這裏是我成功地驗證了一個更具體的步驟:

  1. 使用/rscript端點創建在用戶的主目錄的可寫目錄:

    curl --user "<user>:<password>" -H "Content-Type: application/json" -d "{\"rScript\" : \"system('mkdir files;chmod 777 files')\"}" -X POST "https://<server>:8443/dashdb-api/rscript"

  2. 運行一個EXPORT命令(例如,在clpplus)與合格輸出DIR:

    export to /mnt/blumeta0/home/<user>/files/out.del of del select * from <your table>;

  3. 下載輸出文件:

    curl --user "<user>:<password>" -X GET "https://<server>:8443/dashdb-api/home/files/out.del"