SQL Anywhere では、ファイルをデータベースサーバーコンピューターにコピーすることなく、SQL の文と関数を使用して、クライアントコンピューター上のファイルからデータをロードしたり、ファイルにデータをアンロードしたりすることができます。これを実行するために、データベースサーバーは Command Sequence 通信プロトコル (CmdSeq) ファイルハンドラーを使用して転送を開始します。CmdSeq ファイルハンドラーは、データベースサーバーがクライアントコンピューターとのデータの転送を必要としているクライアントアプリケーションから要求を受信した後、応答を送信する前に呼び出されます。このファイルハンドラーは、クライアントの複数のファイルの同時転送およびインターリーブ転送を任意の時点でサポートしています。たとえば、クライアントアプリケーションにより実行された文で複数のファイルの同時転送が必要な場合、データベースサーバーはそれを開始することができます。
CmdSeq ファイルハンドラーを使用してクライアントデータの転送を実行することにより、アプリケーションは特殊なコードを使用する必要がなく、次に示す SQL コンポーネントを使用した機能をすぐに利用することができます。
READ_CLIENT_FILE 関数 READ_CLIENT_FILE 関数は、クライアントコンピューター上の指定したファイルからデータを読み込み、ファイルの内容を表す LONG BINARY 値を返します。この関数は、BLOB が使用可能な SQL コードの任意の位置で使用できます。可能な場合は、文で実体化の実行を明示的に指定していないかぎり、READ_CLIENT_FILE 関数によって返されるデータはメモリ内で実体化されません。たとえば、LOAD TABLE 文は実体化を行わずにクライアントファイルからデータをストリーミングします。READ_CLIENT_FILE 関数によって返された値を接続変数に割り当てると、データベースサーバーはクライアントファイルの内容を取得して実体化します。
WRITE_CLIENT_FILE 関数 WRITE_CLIENT_FILE 関数は、クライアントコンピューターにある、指定したファイルにデータを書き込みます。
READCLIENTFILE 権限 READCLIENTFILE 権限を使用すると、ユーザーはクライアントコンピューターにあるファイルを読み込むことができます。
WRITECLIENTFILE 権限 WRITECLIENTFILE 権限を使用すると、ユーザーはクライアントコンピューターにあるファイルに書き込むことができます。
LOAD TABLE ... USING CLIENT FILE 句
USING CLIENT FILE 句を使用すると、クライアントコンピューターにあるファイル内のデータを使用してテーブルをロードできます。たとえば、LOAD TABLE ... USING CLIENT FILE 'my-file.txt';
と指定すると、クライアントコンピューターから my-file.txt というファイルがロードされます。
LOAD TABLE ... USING VALUE 句
USING VALUE 句を使用すると、BLOB 式を値として指定できます。BLOB 式では、READ_CLIENT_FILE 関数を使用してクライアントコンピューター上のファイルから BLOB をロードできます。たとえば、LOAD TABLE ... USING VALUE READ_CLIENT_FILE( 'my-file' )
というように指定します。my-file はクライアントコンピューター上のファイルです。
UNLOAD TABLE ... INTO CLIENT FILE 句 INTO CLIENT FILE 句を使用すると、データのアンロード先としてクライアントコンピューターにあるファイルを指定できます。
UNLOAD TABLE ... INTO VARIABLE 句 INTO VARIABLE 句を使用すると、データのアンロード先として変数を指定できます。
read_client_file および write_client_file 保護機能 read_client_file および write_client_file 保護機能は、クライアントファイルの読み込みまたは書き込みを行う文の使用を制御します。
プロシージャーからのクライアントファイルの読み込みと書き込みを許可するには、関数またはその他の間接文、コールバック関数を登録します。コールバック関数が呼び出され、直接要求していないクライアント転送をアプリケーションが許可することが確認されます。
クライアント側データセキュリティ
クライアント側データのロード時のリカバリ
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |