Shell腳本導入導出數(shù)據(jù)的項目示例
1. 介紹
在工作中 , 很多場景都會涉及到db數(shù)據(jù)的導入導出, 為了不影響正常業(yè)務, 一般會選擇在夜間交易訪問量小的時候定時任務跑批進行數(shù)據(jù)的導入導出. 我們公司, 由于分為了不同區(qū)域的開發(fā)中心, 應用系統(tǒng)也比較多, 所以業(yè)務相互關聯(lián)的各系統(tǒng)間的數(shù)據(jù)依賴, 我們是通過數(shù)據(jù)中臺
做數(shù)據(jù)中轉的, 比如: A系統(tǒng)要做客戶信息的操作但自己沒有這部分信息, 客戶信息主要是B系統(tǒng)在維護, 這時候A系統(tǒng)就需要用到B系統(tǒng)的數(shù)據(jù).
方案就是B系統(tǒng)將客戶信息數(shù)據(jù)資源發(fā)布到數(shù)據(jù)中臺
, 因為A系統(tǒng)向數(shù)據(jù)中臺
訂閱了B系統(tǒng)的客戶信息資源 , 數(shù)據(jù)中臺
會將客戶信息資源轉發(fā)到A系統(tǒng)服務器的指定目錄, 最后A系統(tǒng)只需要開發(fā)shell腳本將資源文件中的數(shù)據(jù)導入本地數(shù)據(jù)庫即可.
B系統(tǒng)需要A系統(tǒng)的業(yè)務數(shù)據(jù)也是一樣的道理, A系統(tǒng)只需要將業(yè)務數(shù)據(jù)資源發(fā)布到數(shù)據(jù)中臺
,(A系統(tǒng)開發(fā)腳本將db數(shù)據(jù)導出為數(shù)據(jù)文件發(fā)送給數(shù)據(jù)中臺), B系統(tǒng)訂閱A系統(tǒng)的資源, 由數(shù)據(jù)中臺
做資源的轉發(fā).
下面主要是總結工作中用到的shell腳本如何實現(xiàn)db數(shù)據(jù)的導入和導出, 數(shù)據(jù)中臺
是一個企業(yè)級數(shù)據(jù)交換服務平臺, 這里就不詳細贅述了.
2. 導入數(shù)據(jù)到db2
將MY_CUSTOMER_INFO_[DATE].del文件數(shù)據(jù)導入MY_CUSTOMER_INFO表.
3. 導出db2數(shù)據(jù)
將MY_CUSTOMER_INFO表的數(shù)據(jù)導出為MY_CUSTOMER_INFO_[DATE].del文件.
導出數(shù)據(jù)也可以使用java程序先查詢數(shù)據(jù),然后通過IO流寫文件.
4. 導入數(shù)據(jù)到mysql
將MY_CUSTOMER_INFO_[DATE].del文件數(shù)據(jù)導入MY_CUSTOMER_INFO表.
導入數(shù)據(jù)部分, 如果null數(shù)據(jù)想使用空字符串替換, 可以使用NULLIF函數(shù)判斷后替換.
5. 導出mysql數(shù)據(jù)
將MY_CUSTOMER_INFO表的數(shù)據(jù)導出為MY_CUSTOMER_INFO_[DATE].del文件.
6. Java程序調用shell腳本
使用java.lang.Runtime
類實現(xiàn)shell腳本的調用并執(zhí)行.
7. 遇到的問題
(1) 上面Java程序調用并執(zhí)行shell腳本, 需要注意服務器系統(tǒng)類型是Linux還是AIX系統(tǒng), 不然傳入的參數(shù)無法接收到.
(2) windows環(huán)境(\r\n)和linux環(huán)境(\r)的換行符不一樣, 導致在windows系統(tǒng)編輯的shell腳本在Linux服務器上執(zhí)行報錯, 需要使用vim編輯器將\r\n
替換為\r
.
腳本格式設置, \r\n
替換為\r
.
:set ff=unix
腳本格式設置, \r
替換為\r\n
.
:set ff=dos
到此這篇關于Shell腳本導入導出數(shù)據(jù)的項目示例的文章就介紹到這了,更多相關Shell導入導出數(shù)據(jù)內容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。