小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

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

説明

--は、コメント。ちなみに/*〜〜*/で複数行をコメントにできる。
goは、sqlの実行(入力したすべてのステートメントを実行)。

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)(省略可)