人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

古いログを消去するSQL文を、シェルスクリプトから実行する必要が出てきました。
通常、プログラミング言語からはDBアクセス用のドライバを使用してSQL文を発行するかと思いますが、
シェルスクリプトの場合はどんな感じに記述すればよいのでしょうか。
SQL自体は
DELETE FROM table_name WHERE ...
のような一文で完結する簡単なものになるかと思います。
DBはOracleです。

●質問者: kyoko55
●カテゴリ:コンピュータ インターネット
✍キーワード:dB DELETE Oracle SQL アクセス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ●
●35ポイント

通常、シェル内でsqlplusコマンドを実行します。

そして、ヒアドキュメントを使ってSQL文を流し込むか、別ファイルにSQL文を用意しておいて実行します。

[参考URL] (sqlplus シェルスクリプトなどのキーワードで検索してみてください)

エラー処理の部分は以下が参考になります。

◎質問者からの返答

Oracleについては、全く初心者なので、沢山の情報ありがとうございます。

指針が定まったような気がします。

今後じっくり読ませていただきます。


2 ● samasuya
●35ポイント

sqlplusでいいんじゃないでしょうか?

シェルスクリプト名を例えば、exec_sql.bashなどにして

#!/bin/bin/bash

sqlplus username/password@TNS_NAME @del.sql

と書いて実行するLINUX(UNIX?)のユーザーに実行権限を与えておきます。

$ chmod 777 exec_sql.bash

で、del.sqlの中に

DELETE FROM table_name WHERE ...;

exit;

と書いておいて実行すれば可能です。

◎質問者からの返答

sqlplusですね。

そして具体例もありがとうございます。

TNS_NAMEは何を意味するのでしょうか。


3 ● samasuya
●10ポイント

この回答には、ポイント不要です。

TNS_NAMEは、ORACLEの設定ファイルtnsnames.oraファイル内で規定されている

ORACLEへの接続の設定名です。

ORACLEのSIDがTESTだったら、大概TESTで設定されてると思います。

sqlplus system/manager@TEST

という感じです。

環境変数でORACLE_SIDが設定されていれば、そちらでもいいと思います。

詳しくは、SQL*PLUSのマニュアルでどうぞ・・・。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ