シェルスクリプトデータベース派生エクスポート指定形式
機能の説明
要件は次のとおりです:
カンマ区切りまたは | 区切りのコンテンツなど、指定された形式のデータをデータベースからエクスポートする必要があります。
エクスポート.sh
#!/usr/bin/bash
datefile=$1
work_path=$2
start_time=`date +%Y%m%d%H%M%S`
#work_path=/home/oracle/fk_data
DbCon=rdsadmin/rds@orcl
file_date=`date +%Y%m%d`
filename=${work_path}/"$datefile"_${file_date}.txt
sqlinfo="select * from $datefile;"
echo "执行的sql: $sqlinfo"
echo "---------------- start to exec job $start_time "
echo "---------------- connect to $DbCon and try to exec sql..."
sqlplus -S $DbCon<< EndSql
set line 1000
set pagesize 0
set feedback off
set heading off
set trimspool on
set trims on
set echo off
set colsep '|'
--set termout off
spool $filename
$sqlinfo
spool off
exit
EndSql
#去除文件开头的空格及中间的空白字符
sed -i 's/ //g' ${work_path}/"$datefile"_${file_date}.txt
end_time=`date +%Y%m%d%H%M%S`
echo "---------------- cmd end , please check te result $end_time"
論理的説明: 2 つのパラメーターを受け取ります。最初のパラメーターはエクスポートされるテーブルの名前で、2 番目のパラメーターはエクスポートされるデータ ファイルの名前です。ここでは日付が識別子として使用されます。最終的に生成されるファイルには空白文字を削除する機能が含まれています。
注: 上記のスクリプトの sqlinfo は、
select * from ts_maodou_data t;のようなものです。
MD5暗号化機能
--MD5
create or replace function MD5(message in varchar2)
return varchar2
is
retval varchar2(32);
begin
retval:=utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => message));
return retval;
end MD5;
注: エクスポートされたデータに md5 暗号化が必要な場合は、データベースにこの関数を作成する必要があります。
注文の実行
sh ./export.sh 表名 /home/oracle/maodou/oracledata
その他のコンテンツ
– データベースのキャラクタ・セット・エンコーディングを確認します
。 select usenv(' language') from Dual;
– スクリプトを実行するサーバーは、文字エンコーディングを指定します
NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
– NLS_LANG を有効にします
。