十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
前段時(shí)間因?yàn)橐霎悩?gòu)數(shù)據(jù)導(dǎo)入導(dǎo)出,所以搜了下,發(fā)現(xiàn)這類(lèi)工具收費(fèi)的居多,使用起來(lái)未必趁手~
于是我找了下相關(guān)開(kāi)源工具,目前,對(duì)于非開(kāi)源的,我找到的大概有三種方式:

達(dá)川ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!
springboot+mybatis寫(xiě)代碼做導(dǎo)入導(dǎo)出->固定表可以這樣做,換張表結(jié)構(gòu)不一樣又要重新開(kāi)發(fā)kattle...一開(kāi)始同事用的這款工具,不過(guò)它太重了,啟動(dòng)卡半天、操作個(gè)字段也卡半天,換個(gè)表還要重新建任務(wù),屎一樣的操作體驗(yàn)...datax,需要配置環(huán)境(java、python) ,以及寫(xiě)任務(wù)文件(json) 似乎也不是很高效快捷,真難為我了直到最近我發(fā)現(xiàn)了一款工具可以配合著dolphinscheduler使用,那體驗(yàn)簡(jiǎn)直了..:爽歪歪????,這次我就講講如何操作~
java環(huán)境(默認(rèn)您已經(jīng)安裝)python環(huán)境(默認(rèn)您已經(jīng)安裝),我這邊使用linux自帶的2.7版本dolphinschedule (默認(rèn)您已經(jīng)安裝)datax安裝版(我使用的是2022年3月份左右的版本)https://datax-opensource.oss-cn-hangzhou.aliyuncs.com//datax.tar.gz
-- postgresql(pg)
CREATE TABLE TMPP (
ID int8 primary key,
NUM int4,
NAME VARCHAR(20) ,
EXT1 date ,
EXT2 timestamp ,
EXT3 timestamp ,
EXT4 DECIMAL(20, 4) ,
EXT5 text ,
EXT6 CHAR(1) ,
EXT7 float4
);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-3,33,'這是名稱(chēng)',NULL,NULL,NULL,830.9123,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-2,22,'n_22','2021-10-28','2021-10-27 11:46:25.000','2021-10-29 11:46:33.000',999.1230,'hello youth!','2',19.);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-1,11,'n_11',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (0,1000,'NAME_1000',NULL,'2021-10-28 16:23:30.000',NULL,NULL,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (1,1001,'NAME_1001','2021-10-28',NULL,'2021-10-28 16:22:41.000',177.3330,'你好啊~','0',NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-99,99,'hello hana','2021-11-02','2021-11-02 14:56:45.758','2021-11-02 14:56:45.758',99.9900,'HELLO TEXT','9',22.);
-- hana(sap db)
CREATE ROW TABLE "TMPP" ( "ID" INT CS_INT NOT NULL, "NUM" INT CS_INT, "NAME" NVARCHAR(20) CS_STRING, "EXT1" DAYDATE CS_DAYDATE, "EXT2" LONGDATE CS_LONGDATE, "EXT3" LONGDATE CS_LONGDATE, "EXT4" DECIMAL(20, 4) CS_FIXED, "EXT5" CLOB MEMORY THRESHOLD 1000 , "EXT6" CHAR(1) CS_FIXEDSTRING, "EXT7" DOUBLE CS_DOUBLE );
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-3,33,'這是名稱(chēng)',NULL,NULL,NULL,830.9123,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-2,22,'n_22','2021-10-28','2021-10-27 11:46:25.000','2021-10-29 11:46:33.000',999.1230,NULL,'2',19.);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-1,11,'n_11',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (0,1000,'NAME_1000',NULL,'2021-10-28 16:23:30.000',NULL,NULL,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (1,1001,'NAME_1001','2021-10-28',NULL,'2021-10-28 16:22:41.000',177.3330,NULL,'0',NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-99,99,'hello postgres','2021-11-02','2021-11-02 14:56:45.758','2021-11-02 14:56:45.758',99.9900,NULL,'9',22.);
datax(通用rdbms方式)開(kāi)啟hana支持首先,要說(shuō)明的是一般datax支持hana有兩種方式:
hana專(zhuān)屬的writer以及reader插件->配置jdbc->編譯上線datax提供的rdbmswriter以及rdbmsreader插件->添加jdbc->配置對(duì)應(yīng)的plugin.json中的driver路徑即可datax的基本結(jié)構(gòu)
上圖為datax解壓后的主目錄.
bin:啟動(dòng)腳本,主要是python腳本,啟動(dòng)一個(gè)任務(wù)實(shí)例時(shí)會(huì)用到conf: 一些基本的配置文件,很少用到job: 任務(wù)配置文件(json格式),這個(gè)目錄是可選的,一般手寫(xiě)任務(wù)配置文件會(huì)放到這個(gè)目錄lib: 通用及基本的jar包依賴log: 任務(wù)日志目錄,這個(gè)目錄也是可選的,一般是啟動(dòng)任務(wù)時(shí)指定log_perf: 也是任務(wù)執(zhí)行統(tǒng)計(jì)日志文件,一般是空的plugin: 里面包含具體的writer以及reader插件及插件配置script: 腳本目錄,這也是可選的,一般腳本文件是統(tǒng)一采用git等版本管理tmp: 臨時(shí)目錄,個(gè)人建的哈????????jdbc驅(qū)動(dòng)文件(jar)一般這個(gè)jdbc需要到包管理網(wǎng)站或者對(duì)應(yīng)數(shù)據(jù)庫(kù)廠商官網(wǎng)下載,這里下hana的driver:https://mvnrepository.com/artifact/com.sap.cloud.db.jdbc/ngdbc
這里的主要操作是將下載好的jar包放到lib目錄內(nèi),這里需要特別說(shuō)明的是:網(wǎng)上有博客寫(xiě)的是放入的plugin目錄,可能我的版本較新或者和他們的集成方式不同吧,對(duì)我來(lái)說(shuō)這個(gè)jar放入到plugin目錄肯定是不行的!??!
以下是我的lib目錄:
rdbms添加hana支持這個(gè)操作在plugin目錄下,對(duì)應(yīng)其中的plugin/writer/rdbmswriter 以及 plugin/reader/rdbmsreader目錄下的plugin.json文件 ,修改drivers這一項(xiàng),這個(gè)一定不能錯(cuò)?。?!
下圖為我添加的 hana driver :
到這里,datax的hana配置已經(jīng)ok了,下面是dolphinscheduler內(nèi)的datax相關(guān)配置~
dolphinscheduler中配置datax環(huán)境變量其實(shí)這一步很簡(jiǎn)單,主要是在dolphinscheduler的->安全中心->環(huán)境管理 菜單下配置datax的位置,這步操作一定要在管理員賬號(hào) (admin)下操作,一般普通用戶是沒(méi)有權(quán)限的,這個(gè)很重要!!!
如果您是多機(jī)集群部署,建議將datax放在相同的目錄位置,不然統(tǒng)一的環(huán)境變量找不到,同時(shí)JAVA_HOME這個(gè)環(huán)境變量也建議配置下,不然會(huì)有些莫名其妙的問(wèn)題發(fā)生就不好了????????
以下是我的配置:
oh,我忘記了,dolphinscheduler默認(rèn)是沒(méi)有hana的數(shù)據(jù)源支持的,需要的可以找我哦(后面會(huì)有博客聊到的,關(guān)注喲~)????
我的測(cè)試的是postgresql內(nèi)的數(shù)據(jù)抽取到hana 以及 hana的數(shù)據(jù)抽取到postgresql 兩個(gè)任務(wù),由于dolphinscheduler的基本使用上一篇博客已經(jīng)講過(guò)了(具體看這個(gè):https://www.cnblogs.com/funnyzpc/p/.html ),這里我只給出具體的任務(wù)節(jié)點(diǎn)配置哈????
(dolphinscheduler任務(wù)具體配置,表sql腳本上文有)
還有幾個(gè)小的注意事項(xiàng)是:
dolphinscheduler的datax任務(wù)下查詢sql需要將字段顯式的寫(xiě)出,不可以用*號(hào)代替dolphinscheduler下配置datax任務(wù)時(shí) 環(huán)境名稱(chēng) (配置的datax環(huán)境變量) 這一項(xiàng)為必選,不然任務(wù)拋錯(cuò)我不負(fù)責(zé)喲????