osqlを使ってバッチファイルからSQLを発行する
前回、bcpをご紹介しましたが、今回はosqlを紹介します。
通常、SQL発行は、インタラクティブにはクエリアナライザやエンタープライズマネジャを使います。まず、コマンドプロンプトからosqlを使う人はあまりいないと思います。しかし、バッチの時は、osqlかisqlかbcpを使うしかないですね。
ちなみに、isqlは、機能が制限されているとのことで、osqlの使用が推奨(2000では)されているとのことです。しかし、SQLサーバーの最新バージョン2005では、どちらもNGで、sqlcmdが推奨されているとのことです。今回は、あくまでosqlです。
まず、SQLファイル(test01.sql)とバッチファイル(test01.bat)を用意します。test01.bat実行後、その結果がtest01.txtに出力されます。以下が、そのソースと説明です。
test01.sql
-- select EmployeeID, FirstName, LastName from Employees select * from Customers go
test01.bat
@echo off osql -E -S localhost -d Northwind -i test01.sql -o test01.txt -n -w 400 -s "," -h-1
説明
- -Eは、Windows のログインア カウントを用いて接続を要求します(Windows認証)。ちなみに、SQL Server 認証では、-U login_id -P password です。
- -Sは、サーバー名
- -dは、データベース名
- -iは、入力ファイル(test01.sql)を指定。
- -oは、出力ファイル(test01.txt)を指定。(省略可)
- -nは、入力行から行番号とプロンプト記号 (>) を削除します。(省略可)
- -wは、一行の最大バイト数 (省略可)
- -sは、項目と項目とのデリミタ(省略可)
- -hは、ヘッダーの制御(-h-1はヘッダーを出力しない。-hと-1でスペースを空けてはNG)(省略可)