Kettle同步SAP數(shù)據(jù)之通用函數(shù)RFC_READ_TABLE介紹

Kettle連接SAP操作指南
視頻:AV676637924
背景
SAP數(shù)據(jù)同步至數(shù)據(jù)倉庫,由于License限制,沒有SAP和HANA直連許可,因此開始研究各種API方式接入

上圖可見,調(diào)用 RFC_READ_TABLE 函數(shù),可以獲取SAP表的數(shù)據(jù)。

通過這個(gè)配置可見,連接方式是RFC連接。
在下載了最新版Kettle之后,嘗試跟著視頻如法炮制,結(jié)果在連接頁面一直連接不上SandBox環(huán)境,也不提示任何錯(cuò)誤。視頻中“應(yīng)該拷貝哪些Jar包”的問題,也沒有給出答案,估計(jì)找遍全網(wǎng)都沒有。
破解之道
于是開始琢磨看看日志,用jd-gui反編譯kettle的jar包看看。

從kettle的項(xiàng)目結(jié)構(gòu)入手,猜想主要連接SAP的包可能在lib和plugins文件夾中。

果不其然,jar包就在其中,于是新建工程,導(dǎo)入一下試試:

從上圖可見,注釋都是我踩過的坑,Jar包和SDK都太老了,而從SAP下載必須登錄客戶賬號(hào)(因?yàn)榫W(wǎng)絡(luò)上找不到合適的資源,最終還是找的德勤的伙伴給下載的)
下載地址: https://support.sap.com/en/product/connectors/jco.html
借助Kettle的實(shí)現(xiàn),直接寫調(diào)用代碼即可:

以上代碼運(yùn)行結(jié)果:

可見已成功連接并讀取數(shù)據(jù)。
弊端
受限于數(shù)據(jù)最大長度512字節(jié),無法完成大表同步。

其他方式
Python亦可實(shí)現(xiàn),前提是解決包沖突和SDK依賴問題:

ChatGPT的回答:

以及關(guān)于ODP的對(duì)比:

以及其他方式的對(duì)比:

竟然推薦我直連HANA,澄清下看看怎么說:

關(guān)于ODATA和ODP的對(duì)比:

順便問問實(shí)時(shí)接入(后被告知License不含此項(xiàng),需額外付費(fèi))
