Shell腳本導(dǎo)入導(dǎo)出數(shù)據(jù)的項(xiàng)目示例
1. 介紹
在工作中 , 很多場(chǎng)景都會(huì)涉及到db數(shù)據(jù)的導(dǎo)入導(dǎo)出, 為了不影響正常業(yè)務(wù), 一般會(huì)選擇在夜間交易訪問(wèn)量小的時(shí)候定時(shí)任務(wù)跑批進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出. 我們公司, 由于分為了不同區(qū)域的開(kāi)發(fā)中心, 應(yīng)用系統(tǒng)也比較多, 所以業(yè)務(wù)相互關(guān)聯(lián)的各系統(tǒng)間的數(shù)據(jù)依賴, 我們是通過(guò)數(shù)據(jù)中臺(tái)做數(shù)據(jù)中轉(zhuǎn)的, 比如: A系統(tǒng)要做客戶信息的操作但自己沒(méi)有這部分信息, 客戶信息主要是B系統(tǒng)在維護(hù), 這時(shí)候A系統(tǒng)就需要用到B系統(tǒng)的數(shù)據(jù).
方案就是B系統(tǒng)將客戶信息數(shù)據(jù)資源發(fā)布到數(shù)據(jù)中臺(tái), 因?yàn)锳系統(tǒng)向數(shù)據(jù)中臺(tái)訂閱了B系統(tǒng)的客戶信息資源 , 數(shù)據(jù)中臺(tái)會(huì)將客戶信息資源轉(zhuǎn)發(fā)到A系統(tǒng)服務(wù)器的指定目錄, 最后A系統(tǒng)只需要開(kāi)發(fā)shell腳本將資源文件中的數(shù)據(jù)導(dǎo)入本地?cái)?shù)據(jù)庫(kù)即可.
B系統(tǒng)需要A系統(tǒng)的業(yè)務(wù)數(shù)據(jù)也是一樣的道理, A系統(tǒng)只需要將業(yè)務(wù)數(shù)據(jù)資源發(fā)布到數(shù)據(jù)中臺(tái),(A系統(tǒng)開(kāi)發(fā)腳本將db數(shù)據(jù)導(dǎo)出為數(shù)據(jù)文件發(fā)送給數(shù)據(jù)中臺(tái)), B系統(tǒng)訂閱A系統(tǒng)的資源, 由數(shù)據(jù)中臺(tái)做資源的轉(zhuǎn)發(fā).
下面主要是總結(jié)工作中用到的shell腳本如何實(shí)現(xiàn)db數(shù)據(jù)的導(dǎo)入和導(dǎo)出, 數(shù)據(jù)中臺(tái)是一個(gè)企業(yè)級(jí)數(shù)據(jù)交換服務(wù)平臺(tái), 這里就不詳細(xì)贅述了.
2. 導(dǎo)入數(shù)據(jù)到db2
將MY_CUSTOMER_INFO_[DATE].del文件數(shù)據(jù)導(dǎo)入MY_CUSTOMER_INFO表.

3. 導(dǎo)出db2數(shù)據(jù)
將MY_CUSTOMER_INFO表的數(shù)據(jù)導(dǎo)出為MY_CUSTOMER_INFO_[DATE].del文件.

導(dǎo)出數(shù)據(jù)也可以使用java程序先查詢數(shù)據(jù),然后通過(guò)IO流寫(xiě)文件.

4. 導(dǎo)入數(shù)據(jù)到mysql
將MY_CUSTOMER_INFO_[DATE].del文件數(shù)據(jù)導(dǎo)入MY_CUSTOMER_INFO表.

導(dǎo)入數(shù)據(jù)部分, 如果null數(shù)據(jù)想使用空字符串替換, 可以使用NULLIF函數(shù)判斷后替換.

5. 導(dǎo)出mysql數(shù)據(jù)
將MY_CUSTOMER_INFO表的數(shù)據(jù)導(dǎo)出為MY_CUSTOMER_INFO_[DATE].del文件.

6. Java程序調(diào)用shell腳本
使用java.lang.Runtime類(lèi)實(shí)現(xiàn)shell腳本的調(diào)用并執(zhí)行.

7. 遇到的問(wèn)題
(1) 上面Java程序調(diào)用并執(zhí)行shell腳本, 需要注意服務(wù)器系統(tǒng)類(lèi)型是Linux還是AIX系統(tǒng), 不然傳入的參數(shù)無(wú)法接收到.
(2) windows環(huán)境(\r\n)和linux環(huán)境(\r)的換行符不一樣, 導(dǎo)致在windows系統(tǒng)編輯的shell腳本在Linux服務(wù)器上執(zhí)行報(bào)錯(cuò), 需要使用vim編輯器將\r\n替換為\r.
腳本格式設(shè)置, \r\n替換為\r.
:set ff=unix
腳本格式設(shè)置, \r替換為\r\n.
:set ff=dos
到此這篇關(guān)于Shell腳本導(dǎo)入導(dǎo)出數(shù)據(jù)的項(xiàng)目示例的文章就介紹到這了,更多相關(guān)Shell導(dǎo)入導(dǎo)出數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具,本文直接給出實(shí)現(xiàn)腳本代碼,需要的朋友可以參考下2015-06-06
ubuntu 解決libsqlite3-0依賴的問(wèn)題(推薦)
下面小編就為大家?guī)?lái)一篇ubuntu 解決libsqlite3-0依賴的問(wèn)題(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
一天一個(gè)shell命令 linux好管家-進(jìn)程-ps命令詳解
這篇文章主要介紹了一天一個(gè)shell命令 linux好管家-進(jìn)程-ps命令詳解 ,需要的朋友可以參考下2016-06-06
在Linux與Windows上獲取當(dāng)前堆棧信息的方法
下面小編就為大家?guī)?lái)一篇在Linux與Windows上獲取當(dāng)前堆棧信息的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
如何使用 Shell 腳本執(zhí)行 .NET Core 應(yīng)用
這篇文章主要介紹了如何使用 Shell 腳本執(zhí)行 .NET Core 應(yīng)用,幫助大家更好的理解和使用shell 腳本,感興趣的朋友可以了解下2020-09-09

