儲存過程遷移 shell指令碼

2021-09-26 07:27:03 字數 2159 閱讀 5021

#!/bin/bash

#$1:主機名 $2:資料庫名

if [[ 「$1」 != 「」 && 「$2」 != 「」 ]];then

#建立乙個以資料庫命名的資料夾用來存放儲存過程

if[ ! -d /home/dsadm/chengkai/$2 ];then

mkdir -p /home/dsadm/chengkai/$2

fi#show plsql functions 列出使用者定義儲存過程名字(不含引數)放到$2_plsql_name.txt

beeline -u jdbc:hive2://$1:10000/$2 --showheader=false --maxwidth=10000 -e 「show plsql functions」

|grep -v 『+』|grep -v 『call_』|sed 『info/d』|sed 『s/|//g』|sed "s/(.)//g"

|sed 『system functions/,/user defined/d』 > /home/dsadm/chengkai/tmp/$2_plsql_name.txt

#按行讀取$2_plsql_name.txt

cat /home/dsadm/chengkai/tmp/$2_plsql_name.txt|while read line

do#庫名.儲存過程名 以.分割 取第二段(儲存過程名)轉化成大寫

proc_name=echo $line|awk -f '.' ''|tr a-z a-z

#將#use $2;

#!set plsqlclientdialect db2;

#set plsql.server.dialect=db2;

#set hive.exec.dynamic.partition=true;

#set hive.crud.dynamic.partition=true;

#插入到儲存過程檔案2/2/

2/proc_name.sql最前面

echo 「use $2;

!set plsqlclientdialect db2;

set plsql.server.dialect=db2;

set hive.exec.dynamic.partition=true;

set hive.crud.dynamic.partition=true;」 > /home/dsadm/chengkai/2/2/

2/proc_name.sql

#用desc plsql function extended $line;檢視儲存過程內容處理好追加到2/2/

2/proc_name.sql

beeline -u jdbc:hive2://$1:10000/$2 --showheader=false --maxwidth=10000 -e "desc plsql function extended lin

e;"∣

sed′

1d′∣

sed′

line;" |sed '1d'|sed '

line;"

∣sed

′1d′

∣sed

′d』|sed 『s/^|//g』|sed 『s/|//g

′∣se

d′s/

//g′

∣sed

′1,3

d′∣s

ed′/

prot

otyp

e:/,

//g'|sed 's/^ //g'|sed '1,3d' |sed '/prototype:/,

//g′∣s

ed′s

///g

′∣se

d′1,

3d′∣

sed′

/pro

toty

pe:/

,d』|sed 's/[ ]

/ /g

′∣se

d′

//g'|sed '

//g′∣s

ed′a 『/』』 >> /home/dsadm/chengkai/2/2/

2/proc_name.sql

done
else

echo 『usage :sh desc_plsql.sh server database!』

fi

資料庫遷移(二) 儲存過程遷移

要注意 mysql只有在5.1以及以上才能夠使用事件,我這裡用的是windows的定時任務。新建函式 過程 複製oracle中的過程,然後更換一些在mysql中不能用的方法替換掉,如 to date換成date format等 trunc from dual等可以直接去掉 時間型別轉換成 y m d...

shell呼叫儲存過程

elsif v num 2 then execute immediate v sql using in param1 in param2 out p out sqlcode,out p out errmsg get p out sqlcode p out sqlcode awk f p out sq...

SHELL呼叫儲存過程

1 測試用例 bin sh 日期變數可設成傳入引數 exec date date y m d s 設定無提示模式,該模式隱藏命令的 sql plus 標幟,提示和回顯的顯示 sqlplus s scott oracle declare 宣告變數 i current date date v outpu...