首頁 > 軟體

Shell指令碼匯入匯出資料的專案範例

2022-04-20 13:01:16

1. 介紹

在工作中 , 很多場景都會涉及到db資料的匯入匯出, 為了不影響正常業務, 一般會選擇在夜間交易存取量小的時候定時任務跑批進行資料的匯入匯出. 我們公司, 由於分為了不同區域的開發中心, 應用系統也比較多, 所以業務相互關聯的各系統間的資料依賴, 我們是通過資料中臺做資料中轉的, 比如: A系統要做客戶資訊的操作但自己沒有這部分資訊, 客戶資訊主要是B系統在維護, 這時候A系統就需要用到B系統的資料.

方案就是B系統將客戶資訊資料資源釋出到資料中臺, 因為A系統向資料中臺訂閱了B系統的客戶資訊資源 , 資料中臺會將客戶資訊資源轉發到A系統伺服器的指定目錄, 最後A系統只需要開發shell指令碼將資原始檔中的資料匯入本地資料庫即可.

B系統需要A系統的業務資料也是一樣的道理, A系統只需要將業務資料資源釋出到資料中臺,(A系統開發指令碼將db資料匯出為資料檔案傳送給資料中臺), B系統訂閱A系統的資源, 由資料中臺做資源的轉發.

下面主要是總結工作中用到的shell指令碼如何實現db資料的匯入和匯出, 資料中臺是一個企業級資料交換服務平臺, 這裡就不詳細贅述了.

2. 匯入資料到db2

將MY_CUSTOMER_INFO_[DATE].del檔案資料匯入MY_CUSTOMER_INFO表.

3. 匯出db2資料

將MY_CUSTOMER_INFO表的資料匯出為MY_CUSTOMER_INFO_[DATE].del檔案.

匯出資料也可以使用java程式先查詢資料,然後通過IO流寫檔案.

4. 匯入資料到mysql

將MY_CUSTOMER_INFO_[DATE].del檔案資料匯入MY_CUSTOMER_INFO表.

匯入資料部分, 如果null資料想使用空字串替換, 可以使用NULLIF函數判斷後替換.

5. 匯出mysql資料

將MY_CUSTOMER_INFO表的資料匯出為MY_CUSTOMER_INFO_[DATE].del檔案.

6. Java程式呼叫shell指令碼

使用java.lang.Runtime類實現shell指令碼的呼叫並執行.

7. 遇到的問題

(1) 上面Java程式呼叫並執行shell指令碼, 需要注意伺服器系統型別是Linux還是AIX系統, 不然傳入的引數無法接收到.

(2) windows環境(rn)和linux環境(r)的換行符不一樣, 導致在windows系統編輯的shell指令碼在Linux伺服器上執行報錯, 需要使用vim編輯器將rn替換為r.

指令碼格式設定, rn替換為r.

:set ff=unix

指令碼格式設定, r替換為rn.

:set ff=dos

到此這篇關於Shell指令碼匯入匯出資料的專案範例的文章就介紹到這了,更多相關Shell匯入匯出資料內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com