我正在研究數據攝取應用程序。我必須在oracle中運行查詢,然後將結果集插入到Vertica中。但是,我發現完成這項任務需要更多的時間。這就是我所做的。在Oracle和Vertica之間移動數據的高效方法
1)在oracle中執行查詢並獲取結果集。同時打開與vertica的連接並創建一個準備好的語句。
2)將oracle結果集作爲一批30K記錄讀取,並使用Vertica準備好的語句執行它們。
3)從Oracle讀取下一批記錄並重復步驟2,直到從Oracle結果集中讀取所有記錄。
我面臨兩個問題的方法:
1)的過程極其緩慢。
2)部分記錄遺漏,不會傳遞給Vertica。
我可能的解決方案:
- 複製甲骨文的結果集到一個文件中並傳遞給Vertica的。這需要在代碼中包含一些文件清理工具。
- 我可以使用VerticaCopyStream API將它們插入到Vertica表中。 VerticaCopyStream API的工作速度比Prepared語句快得多。它需要將一個輸入流傳遞給該文件。
- 如果解決方案1不比當前的解決方案更好,我可以考慮將結果集的輸入流傳遞給VerticaCopyStream API。
我應該只通過Java來做到這一點。你能針對這種情況提出優化的解決方案嗎?
你有任何ETL工具嗎? – Kermit
不需要。我必須用java做這件事 – Santhosh
你只需要用Java來完成這項工作。 – woot