#!/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...