2016-10-21 9 views
-2

プログラミングに関することは初めてです。私は、自動化する必要があるSQLスクリプトがあります。次のように必要な自動化は次のとおりです。SQLスクリプトの自動化

1)スクリプトは、毎週日曜日に実行する必要があります

結果セット2)自動的にDUMP_YYYYMMDDHH24MISS.txt

3)にして結果をダンプ

があるタールgziped

4)提供されたユーザー名とパスワードでSFTP URLにアップロードします。

私が使用しています: UNIX、 にVertica DB

を達人がここで助けてくださいことはできますか?

+4

何を試しましたか?結果は何でしたか? –

+0

(3)の場合: 'ls * .txt'のi。/usr/bin/gzip $ iを実行します。完了しました (4):sftp UNAME @ IPADDRESS sftp> mput .gz (1)と(2)はまだありません。私はルーキーなので指示を与える必要があるポインタを感謝します。 :) –

+0

これはかなり広いです。簡単な答えは、 'vsql'を呼び出してsqlを接続して実行するシェルスクリプトを書くことです。 sqlをファイルに出力するためには '\ o'、タプルだけに対しては' \ a'、非整合データを設定するには '\ t'のようなパラメータを使います。ファイルを送るには 'gzip'や' tar'とscpやsftpクライアントを使います。それをスケジュールするには 'cron'を使います。これは難しいことではありませんが、あなたがそれらに精通していない場合は、さまざまな部分があります。vsqlを使ってファイルを作成してからシンプルに始め、その周りにスクリプトを作成します。 – woot

答えて

1

これは実際には4つの質問で、おそらくそのように尋ねられるべきです。しかし、現在の形式でお答えします

1)が自動的にタスクをスケジュールする - クローンタブの端末で

、タイプcrontab -e。あなたは午前1時で毎週日曜日に何かをしたい場合は

、次の行を追加します。

0 1 * * * 0 /path/to/script/script.sh 

これは、毎週日曜日のスクリプトを実行します。コマンドの出力

を設定

2)私は、Oracleに精通しています。フォーマットはおそらく似ています。あなたが望むようにファイル名を得るためには、次のようにdate関数を使います。 (これは私がオラクルにそれを行うだろうかです):あなたのdateコマンドを使用すると、日付にmanページをすれば、それはあなたが取得する必要があると思い、どのパラメータを教えてくれます、たぶん違う

d=$(date +%Y%M%D%H%M) 
var=$(sqlplus -s/as blahblahblah 
select * from stuff; 
exit 
EOF 
) 

file_name=DUMP_${d}MISS.txt 
echo "${var}" >> ${file_name} 

注意日付は好きなように書式設定されています。出力

tar -xvf ${file_name} 

)あなたはSFTPを認証する必要があると思いますSFTP
上で送信を風袋引き

3)は、それは誰もがより多くの詳細がなく答えることができるものの範囲を超えています。認証するマシンを設定したら、次のようにします。

sftp [email protected]<<EOF 
put ${file_name} 
EOF 
+1

で注意してください。そのcronは毎週日曜日に2回以上実行されます。毎週日曜日に特定の時刻に '0 1 * * 0'のようなものが必要になります。 – woot

+0

ああ、そうです。私はこれのようなものからすべてのクローンを取る必要はなかった。通常、曜日はcronが制限要因として使用され、実行可能な要因としては使用されません。 (たとえば、私はいつもこれを*毎日実行する*日曜日を除いて実行しました)。キャッチをありがとう。 – mkingsbu

+1

申し訳ありませんが、まだ正しくはありませんでした。私はあなたのためにそれを変更しました。あなたが持っていたものは、日曜日の午前1時に1分ごとに実行されます。 ;-) – woot

関連する問題