17

自動化しようとしているSQLスクリプトがいくつかあります。過去に私はSQL*Plusを使用し、bashスクリプトから手動でsqlplusバイナリを呼び出しました。

ただし、DBに接続し、bashスクリプト内からスクリプトを呼び出す方法があるかどうかを調べようとしています...これにより、クエリを挿入dateして、特定の日数に関連してクエリを実行できるようになります。過去。

4

7 に答える 7

22

少し混乱しています。bashスクリプト内からsqlplusを呼び出すことができるはずです。これはあなたが最初の声明でやっていたことかもしれません

bashスクリプト内で以下を実行してみてください。

#!/bin/bash          
echo Start Executing SQL commands
sqlplus <user>/<password> @file-with-sql-1.sql
sqlplus <user>/<password> @file-with-sql-2.sql

スクリプトにデータを渡すことができるようにしたい場合は、スクリプトに引数を渡すことにより、SQLPlusを介してそれを行うことができます。

file-with-sql-1.sqlの内容

 select * from users where username='&1';

次に、bashスクリプトを変更して、値を渡すsqlplusを呼び出します。

#!/bin/bash

MY_USER=bob
sqlplus <user>/<password> @file-with-sql-1.sql $MY_USER
于 2009-09-23T18:43:52.423 に答える
9

「ヒアドキュメント」を使用して同じことを行うこともできます。

VARIABLE=SOMEVALUE

sqlplus connectioninfo << HERE
start file1.sql
start file2.sql $VARIABLE
quit
HERE
于 2013-03-21T22:09:46.297 に答える
2

たぶん、SQLクエリをsqlplusにパイプすることができます。それはmysqlのために働きます:

echo "SELECT * FROM table" | mysql --user=username database
于 2009-09-23T18:46:57.550 に答える
0

これがbashシェルでMySQLクエリを実行する簡単な方法です

mysql -u [database_username] -p [database_password] -D [database_name] -e "SELECT * FROM [table_name]"
于 2009-09-23T18:46:45.083 に答える
0

Sourceforgeでjdbcsqlプロジェクトを使用しました。

* nixシステムでは、これにより、標準出力への結果のcsvストリームが作成されます。

java -Djava.security.egd=file///dev/urandom -jar jdbcsql.jar -d oracledb_SID -h $host -p 1521 -U some_username -m oracle -P "$PW" -f excel -s "," "$1"

-Djava.security.egd=file///dev/urandom追加するとパフォーマンスが大幅に向上することに注意してください

Windowsコマンドも同様です。http://jdbcsql.sourceforge.net/を参照してください。

于 2018-12-20T02:54:23.730 に答える
0

サーバー/マシンにインストールしたくない場合はsqlplus、次のコマンドラインツールを使用できます。これは単純なJavaアプリケーションであり、このツールを実行するために必要なのはJava8だけです。

このツールを使用して、LinuxbashまたはWindowsコマンドラインから任意のSQLを実行できます。

例:

java -jar sql-runner-0.2.0-with-dependencies.jar \
     -j jdbc:oracle:thin:@//oracle-db:1521/ORCLPDB1.localdomain \
     -U "SYS as SYSDBA" \
     -P Oradoc_db1 \
      "select 1 from dual"

ドキュメントはこちらです。

バイナリファイルはこちらからダウンロードできます。

于 2020-08-04T16:01:13.290 に答える
-5

BashにはSQLデータベース接続が組み込まれていないため、何らかのサードパーティツールを使用する必要があります。

于 2009-09-23T18:44:30.113 に答える