SQL Anywhere 10 のディレクトリ・アクセス・サーバ機能の使用方

この技術ドキュメントでは、SQL Anywhere 10.x の新しい SQL Anywhere ディレクトリ・アクセス・サーバ機能について説明します。

データベース・サーバを実行しているコンピュータのサーバ・ディレクトリやファイル構造にアクセスしなければならないことがよくあります。この技術ドキュメントでは、新しい SQL Anywhere ディレクトリ・アクセス・サーバ機能について説明します。この機能を使用すれば、ローカル・ドライブから標準 SQL を使用してファイルの追加、更新、および削除が行えます。

必要なソフトウェア

1. SQL Anywhere 10.0.x および それ以降
2. Windows オペレーティング システム

タスク

この機能を使用して、以下のタスクを完了できます。

・SELECT * FROM 文を使用して、ローカル・ドライブのファイルをリストする
・UPDATE 文を使用して、ディレクトリ構造を更新する
・DELETE 文を使用して、ディレクトリを削除する
・INSERT 文を使用して、新しいファイルを作成する
・ファイルのコンテンツを更新する

使用

ユーザによるバックエンド・サーバへのイメージのアップロードを許可する Web アプリケーションを記述している場合、この機能がとても役立ちます。そのようなアプリケーションでは、ローカル・ドライブ・ディレクトリに直接アクセスできれば、アップロードしたイメージを簡単にローカル・ディスク上のファイルに直接書き込むことができます。また、ディスク・イメージの読み込み、修正、および削除も簡単に実行できます。この機能がない場合は、xp_read_file、xp_write_file、および xp_cmdshell ストアド・プロシージャを使用したり、外部 DLL に自分で外部ストアド・プロシージャを作成するなど、別の方法でこの機能を実行しなければなりません。

一時ディレクトリの c:\temp 内のファイルのみを参照できるディレクトリ・アクセス・サーバの作成と構成

1. リモート・サーバを作成します。

   CREATE SERVER diskserver0
   CLASS ‘directory’
   USING ‘root=c:\temp';
    ・diskserver0 はサーバ名です。有効な文字列の名前を指定します。

2. CREATE EXTERNLOGIN 文を使用して、外部ログインを作成します。

   CREATE EXTERNLOGIN DBA TO diskserver0;

3. ディレクトリ用のプロキシ・テーブルを作成します。

   CREATE EXISTING TABLE diskdir0 AT ‘diskserver0;;;.';

4. ディレクトリ内のファイルのリストを取得します。

   SELECT * FROM diskdir0;

   以下のテーブルは、結果セットの例です。

9 つのレベルのディレクトリを参照できるディレクトリ・アクセス・サーバの作成

1. リモート・サーバを作成します。

   CREATE SERVER diskserver9
   CLASS ‘directory’
   USING ‘root=c:\temp;subdirs=8;createdirs=yes';

2. CREATE EXTERNLOGIN 文を使用して、外部ログインを作成します。

   CREATE EXTERNLOGIN DBA TO diskserver9

3. ディレクトリ用のプロキシ・テーブルを作成します。

   CREATE EXISTING TABLE diskdir9 AT ‘diskserver9;;;.';

4. このディスク・ディレクトリ・ツリー内のディレクトリのリストを取得します。

   SELECT permissions, file_name, size FROM diskdir9
   WHERE permissions like ‘d% ‘;

以下のテーブルは、結果セットの例です。


注:backup、dir1、dir2、および dir3 はディレクトリです。

5. ファイルのリストを取得します。

   SELECT permissions, file_name, size FROM diskdir9
   WHERE permissions NOT like ‘d% ‘;

以下のテーブルは、結果セットの例です。

6. 新しいディレクトリを作成します。

   INSERT INTO diskdir9( permissions, file_name )
   VALUES( ‘drwxrwxrwx’, ‘a_new_dir ‘ );

以下のテーブルは、結果セットの例です。

以下のスクリーンショットは、コマンド・プロンプトに表示される結果です。

7. a_new_dir への新しいマッピング・ディレクトリを作成します。

   CREATE EXISTING TABLE newdir1 AT
   ’diskserver9;;;a_new_dir';

8. newdir1 フォルダに新しいファイルを追加します。

   INSERT INTO newdir1( file_name, contents )
   VALUES( ‘new_file1.txt’, ‘The time has come for this
   wonderful feature. ‘ );

以下のスクリーンショットは、コマンド・プロンプトに表示される結果です。

9. 先ほど作成した新しいファイル (new_file1.txt) を削除します。

   DELETE FROM newdir1
   WHERE file_Name = ‘new_file1.txt ‘;

以下のスクリーンショットは、コマンド・プロンプトに表示される結果です。

10. 既存のファイル C:\temp\file1.txt の名前を変更します。

   UPDATE diskdir9
   SET file_name=’new_file_name.txt’
   WHERE file_name =’file1.txt';

以下のスクリーンショットは、コマンド・プロンプトに表示される結果です。