5

.batファイルからクエリを呼び出すにはどうすればよいですか?(私のクエリは次のとおりです:システムからバージョンを選択してください)。

私の.batファイルはこのクエリが返す出力を保存できますか?この出力をNSISスクリプトで使用したいと思います。

4

6 に答える 6

9

Oracleの場合:

コマンドラインからSQLPlusを介して単一のコマンドを発行するにはどうすればよいですか?

@echo select version from system; | sqlplus username/password@database 

出力をファイルにパイプして使用するか、これをforコマンドでラップしてバッチファイル内の出力を解析することができます。

于 2010-01-12T12:27:17.653 に答える
5

編集:この回答はSQL Server向けであり、Oracle向けではありません。(質問がいつ投稿されたかはすぐにはわかりませんでした)。

sqlcmdユーティリティを確認することをお勧めします。

sqlcmdユーティリティを使用すると、コマンドプロンプトでTransact-SQLステートメント、システムプロシージャ、およびスクリプトファイルを入力できます。次の例では、sqlcmdの開始時にクエリを実行し、すぐに終了します。複数のセミコロンで区切られたクエリを実行できます。

sqlcmd -d AdventureWorks -Q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%';"

クエリの出力をファイルに保存するには、この-o C:\< filename>オプションを使用できます。

于 2010-01-12T09:33:33.833 に答える
3

これは、クエリの実行に使用するツールによって異なります。たとえば、mysqlコマンドラインツールの場合は、次のようにします。

mysql -u<user> -p<password> -h<host> -Nrs -e"SELECT version() FROM system" > out.txt

ここで、mysql -u<user> -p<password> -h<host>サーバーに接続するための標準オプションがあります。-Nrsクライアントが結果のすべてのアスキーアートを出力しないようにするオプションのセットです。-e"SELECT version() FROM system"実際に実行されるビットは、実行する必要のあるコマンドを指定します。これらのmysql固有のオプションの詳細については、 http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.htmlを参照してください。使用するクライアントツールで同様のオプションを探します。

最後のビット> out.txtは、標準のオペレーティングシステムレベルのリダイレクトです。これにより、mysqlプログラムからの出力がファイルに保存されますout.txtが、おそらくNSISプログラムに直接リダイレクトすることもできます。

于 2010-01-12T09:36:16.500 に答える
2

試す

sqlplus user/pwd@mydb @query.sql > result.txt

ここで、query.sqlにはデータベースクエリが含まれ、result.txtにはクエリ出力が入力されます。

クエリによっては、出力ファイルが期待どおりにならない場合があります(sqlplusの典型的な列ヘッダーなど)。したがって、query.sqlには、必要に応じて出力を調整するためのSETコマンドが含まれている必要があります。

もう1つの方法は、結果をファイルにパイプする代わりにOracleSPOOLコマンドを使用することです。

于 2010-01-12T10:25:10.437 に答える
1

これを試して:

http://www.dbforums.com/oracle/1044496-sqlplus-return-value-help.html

于 2010-01-12T10:11:18.533 に答える
0

コマンドラインSQLユーティリティを使用している場合は、おそらくコマンドライン操作が可能です。SQLバージョンに応じて確認できます。

于 2010-01-12T09:34:21.130 に答える