.batファイルからクエリを呼び出すにはどうすればよいですか?(私のクエリは次のとおりです:システムからバージョンを選択してください)。
私の.batファイルはこのクエリが返す出力を保存できますか?この出力をNSISスクリプトで使用したいと思います。
.batファイルからクエリを呼び出すにはどうすればよいですか?(私のクエリは次のとおりです:システムからバージョンを選択してください)。
私の.batファイルはこのクエリが返す出力を保存できますか?この出力をNSISスクリプトで使用したいと思います。
Oracleの場合:
コマンドラインからSQLPlusを介して単一のコマンドを発行するにはどうすればよいですか?
@echo select version from system; | sqlplus username/password@database
出力をファイルにパイプして使用するか、これをfor
コマンドでラップしてバッチファイル内の出力を解析することができます。
編集:この回答は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>
オプションを使用できます。
これは、クエリの実行に使用するツールによって異なります。たとえば、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プログラムに直接リダイレクトすることもできます。
試す
sqlplus user/pwd@mydb @query.sql > result.txt
ここで、query.sqlにはデータベースクエリが含まれ、result.txtにはクエリ出力が入力されます。
クエリによっては、出力ファイルが期待どおりにならない場合があります(sqlplusの典型的な列ヘッダーなど)。したがって、query.sqlには、必要に応じて出力を調整するためのSETコマンドが含まれている必要があります。
もう1つの方法は、結果をファイルにパイプする代わりにOracleSPOOLコマンドを使用することです。
コマンドラインSQLユーティリティを使用している場合は、おそらくコマンドライン操作が可能です。SQLバージョンに応じて確認できます。