isql
説明
対話型の ODBC テスト ツールである isql を使用するれば、DSN に対しデータベースへの接続をテストしたり、データベースに接続できていれば SQL ステートメントを実行したりすることができます。このツールの 32 ビット版は、PSQL Server 32 ビット、PSQL Client 32 ビット、また PSQL 64 ビットのインストールで一緒にインストールされます。このツールの 64 ビット版は isql64 という名前です。これは PSQL Server 64 ビットおよび PSQL Client 64 ビットのインストールで一緒にインストールされます。
2 つのユーティリティの違いは、接続できる DSN のタイプです。デフォルトで、
dsnadd は 32 ビットおよび 64 ビットのどちらのアプリケーションにもアクセスできます(DSN はドライバー記述 "Pervasive ODBC Interface" を指定します)。
isql または
isql64 ではそのような DSN の接続をテストできます。
Linux、OS X および Raspbian 用の PSQL ODBC ドライバー記述を参照してください。
使用が推奨されないレガシー スタイルの DSN がアクセスできるのは 32 ビット アプリケーションのみです。このため、そのような DSN の接続テストが可能なのは
isql のみです。
Linux、OS X、Raspbian 向けの ODBC および DSN サポートに関する FAQを参照してください。
たとえば、PSQL に含まれる Demodata サンプル データベースに接続するには、isql demodata または isql64 demodata というように、DSN を第 1 パラメーターとして指定し isql(または isql64)を実行します(Demodata 用の DSN にはドライバー記述に "Pervasive ODBC Interface" を指定するので、どちらのバージョンのツールもその DSN 接続をテストすることができます)。
このツールを使用すると、データベースを対話型で処理できる状態になります。この状態で、データベースにクエリ(SELECT * FROM Department など)を実行することができます。
isql を使用してデータベースのセキュリティを有効にするには、まず Master ユーザーとしてデータベースに接続します。次に SQL の SET SECURITY ステートメントを使用して Master ユーザーのパスワードを設定します。たとえば、次のようにします。
isql demodata Master
SET SECURITY = password
『
SQL Engine Reference』の
SET SECURITY を参照してください。
セキュリティが設定されているデータベースに接続するには、isql の 2 番目と 3 番目のパラメーターとして、それぞれユーザー名とパスワードを渡します。たとえば、demodata にパスワード vforge を使用し Master ユーザーとして接続するには、isql64 demodata Master vforge または isql demodata Master vforge と入力します。
概要
<isql | isql64> DSN [UID [PWD]] [options]
上記の要素は次のような意味があります。
DSN は接続するデータベースのデータ ソース名です。必ず指定する必要があります。
UID は、PSQL SQL データベース エンジンに接続するユーザー名です。セキュリティで保護されたデータベースに対して使用します。セキュリティで保護されているデータベースの場合のみ必要です。
PWD は UID のパスワードです。UID が使用されている場合のみ必要です。
options は以下に示す 1 つまたは複数のオプションです。
オプション
-b | バッチ処理用のプロンプトを表示させないようにします。 注記を参照してください。 |
-c | 最初の行の列名を表示します(-d と共に使用)。 |
-dx | x 文字で列を区切ります。 |
-llocnname | locname にロケールを設定します。 |
-mn | 列の表示幅を n 文字(数)に制限します。 |
-v | エラーや警告の詳細な説明を表示します。 |
--version | 使用中の unixODBC のバージョンを表示します。 |
-w | 結果を HTML テーブルにラップします。 |
-x0xHH | HH で列を区切ります。x は 16 進数で示します。たとえば、0x09 はタブ文字です。 |
コマンド
対話モードにした場合は、以下のコマンドを使用することができます。
sql-statement | isql または isql64 によって接続されるデータベースに対して実行する有効な SQL ステートメント。 |
help [tablename] | 列情報を表示します。この出力は dbo.fSQLColumns カタログ関数の出力と同じです。『 SQL Engine Reference』の dbo.fSQLColumns を参照してください。 tablename を省略すると、出力はデータベースのすべてのテーブルを対象とします。これにはシステム テーブルも含まれます。 |
quit | 対話モードを終了します。 |
注記
デフォルトで、isql および isql64 は対話モードの場合にプロンプト情報を表示します(Connected!、sql-statement、help [tablename] および quit など)。ファイルへの出力をリダイレクトおよびパイプするため、プロンプト情報を表示させたくない場合もあります。-b オプションを使用すれば、プロンプト情報は出力されません。
isql および isql64 は入出力のリダイレクションとパイプをサポートします。さらに、両ユーティリティは複数の SQL ステートメントを含むファイルを処理することができます。各ステートメントの終わりには、キャリッジ リターン/ライン フィードを指定する必要があります。ファイルの最終行は空白行にしてください。
例を参照してください。
例
次の例では、64 ビット クライアント上で実行する 64 ビット ODBC アプリケーションからアクセスされる、セキュリティで保護されていない acctspay というデータベースに接続します。
isql64 acctspay
データベースと同様に acctspay という DSN が指定されています。この DSN では ODBC ドライバー記述 "Pervasive ODBC Interface" を指定しています。
次の例は、セキュリティで保護された payrol というデータベースに対し、パスワード j77b99 を使用し Master ユーザーとして接続します。
isql payrollsecdb Master j77b99
payrollsecdb という DSN が指定されています。この DSN では、使用が推奨されないレガシー スタイルの ODBC ドライバー記述 "Pervasive ODBC Engine Interface" を指定しています。また、isql の他の用途としては、ODBC ドライバー記述 "Pervasive ODBC Interface" が指定されているかどうか DSN をテストすることもできます。
次の例は、複数の SQL ステートメントを処理する方法を示します。Demodata サンプル データベースに対して、以下の 2 つのクエリを実行します。
select count(*) from billing
select count(*) from person
この 2 つの行で 1 つのファイル(説明上、名前は two-queries.sql とします)が作成されます。ファイルの最終行として空白行追加します。
次のコマンドを実行します。
cat two-queries.sql | isql demodata -b
結果は次のようになります。
+------------+
| EXPR_1 |
+------------+
| 1315 |
+------------+
SQLRowCount returns 1
1 rows fetched
+------------+
| EXPR_1 |
+------------+
| 1500 |
+------------+
SQLRowCount returns 1
1 rows fetched
-b オプションを使用した場合は、プロンプト情報が出力されないので注意してください。-b オプションを使用していなければ、結果は次のようになります。
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> +------------+
| EXPR_1 |
+------------+
| 1315 |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL> +------------+
| EXPR_1 |
+------------+
| 1500 |
+------------+
SQLRowCount returns 1
1 rows fetched
関連項目