Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

SQL コードのインポート

この章では、SQL コードをテキスト・ファイルから Caché SQL にインポートする方法を説明します。SQL コードをインポートすると、Caché は %Library.ResultSetOpens in a new tab ダイナミック SQL クラスを使用して各 SQL 行を作成して実行します。解析できないコード行が検出された場合は、SQL インポートではそのコード行がスキップされて、ファイルの末尾に達するまで後続行の作成と実行が続行されます。すべての SQL コード・インポート操作では、現在のネームスペースにインポートされます。

SQL インポートの主な用途は、CREATE TABLE などのデータ定義言語 (DDL) 文をインポートすること、および INSERT、UPDATE、および DELETE 文を使用してテーブルを操作することです。SQL インポートは SELECT 文を作成して実行しますが、結果セットは作成しません。

SQL インポートを使用して Caché SQL コードをインポートできます。SQL インポートはコード移行のためにも使用できます。コード移行とは、他のベンダの SQL コードをインポートすることです (FDBMS、Informix、Interbase、MSSQLServer、MySQL、Oracle、Sybase)。他のベンダのコードは、Caché SQL コードに変換されて実行されます。SQL インポートは、すべての SQL 文を Caché SQL にインポートできるわけではありません。SQL インポートは、Caché で実装されている SQL 標準に対応している文と節をインポートします。対応していない機能は通常は解析されますが、無視されます。

正常に実行された SQL 文によって、対応するクエリ・キャッシュが適宜作成されます。

SQL コードのインポートを実行するには、%SYSTEM.SQLOpens in a new tab クラスから適切なメソッドを呼び出します。SQL コードをインポートする際、これらのメソッドによって Errors.log と Unsupported.log という他の 2 つのファイルが作成される場合があります。Errors.log ファイルには SQL 文の解析に関するエラーが記録され、Unsupported.log ファイルにはそのメソッドで SQL 文として認識されないリテラル・テキスト行が含まれます。

この章では、各種 SQL コードのインポートについて説明します。

%Library.ResultSetOpens in a new tab の詳細は、“%Library.ResultSet を使用したダイナミック SQL” を参照してください。

Caché SQL のインポート

以下のいずれかのメソッドを使用して、Caché SQL コードをテキスト・ファイルからインポートできます。

  • DDLImport()Opens in a new tab は汎用の SQL インポート・メソッドです。このメソッドは、バックグラウンド (非インタラクティブ) プロセスとして実行されます。Caché SQL をインポートするには、1 つ目のパラメータとして “CACHE” を指定します。

  • Cache()Opens in a new tab は Caché の SQL インポート・メソッドです。このメソッドは、ターミナルからインタラクティブに実行されます。ターミナルでは、インポート・テキスト・ファイルの場所や、Errors.log ファイルと Unsupported.log ファイルを作成する場所などの情報を指定するように求められます。

次の例では、Caché SQL コード・ファイル mysqlcode.txt をインポートして、このファイルの SQL 文を現在のネームスペース内で実行します。

  DO $SYSTEM.SQL.DDLImport("CACHE","glenn","c:\temp\mysqlcode.txt",,1)

既定では、DDLImport() はエラー・ログ・ファイルを作成します。この例では、mysqlcode_Errors.log という名前のファイルが SQL コード・ファイルと同じディレクトリ内に作成されます。5 番目のパラメータは、サポートされていない文が列挙されたファイルを作成するかどうかを指定するブーリアン値です。既定値は 0 です。この例では、5 番目のパラメータが 1 に設定されているため、mysqlcode_Unsupported.log という名前のファイルが SQL コード・ファイルと同じディレクトリ内に作成されます。これらのログ・ファイルは、各ファイルに書き込む内容がない場合でも作成されます。

インポート・ファイル形式

SQL テキスト・ファイルは、.txt ファイルなどの書式なしファイルである必要があります。各 SQL 文はそれぞれ新しい行で始まる必要があります。1 つの SQL 文を複数の行に分けることができ、インデントが許可されています。既定では、各 SQL 文の後ろには、GO 文をそれぞれの行に記述する必要があります。

以下は、有効な Caché SQL インポート・ファイル・テキストの例です。

CREATE TABLE Sample.MyStudents (StudentName VARCHAR(32),
StudentDOB DATE)
GO
  INSERT INTO Sample.MyStudents (StudentName,StudentDOB) SELECT Name,
  DOB FROM Sample.Person WHERE Age <= '21'
GO
INSERT INTO Sample.MyStudents (StudentName,StudentDOB) 
          VALUES ('Jones,Mary',60123)
GO
INSERT OR UPDATE INTO Sample.MyStudents (StudentName,StudentDOB) VALUES ('Smith-Jones,Mary',60123)
GO
DELETE FROM Sample.MyStudents WHERE StudentName %STARTSWITH 'A'
GO
SELECT TOP 5 * FROM Sample.MyStudents
GO

DDLImport("CACHE")deos という 7 番目のパラメータを設定した場合は、このメソッドは、各 SQL 文の末尾に配置された、指定された文末区切り文字 (一般にセミコロン ;) を受け付けることができます (ただしこの区切り文字は必須ではありません)。既定では、文末区切り文字はサポートされません。SQL 文の後続行の “GO” 文は常にサポートされていますが、deos で文末区切り文字が指定されている場合は、この GO 文は必須ではありません。

サポートされている SQL 文

すべての有効な Caché SQL コードをインポートできるわけではありません。以下は、サポートされている Caché SQL コマンドのリストです。

  • CREATE TABLEALTER TABLEDROP TABLE

  • CREATE VIEWALTER VIEWDROP VIEW

  • CREATE INDEX (ビットスライスを除くすべてのインデックス・タイプ)

  • CREATE USERDROP USER

  • CREATE ROLE

  • GRANTREVOKE

  • INSERTUPDATEINSERT OR UPDATEDELETE

  • SET OPTION

  • SELECT (オプティマイザ・プラン・モード専用)

コード移行:非 Caché SQL のインポート

他のベンダで使用されている SQL フォーマットに従った SQL コードをインポートできます。他のベンダのコードは、Caché SQL コードに変換されて実行されます。以下のメソッドが用意されています。

  • DDLImport()Opens in a new tab は汎用の SQL インポート・メソッドです。このメソッドは、バックグラウンド (非インタラクティブ) プロセスとして実行されます。特定フォーマットの SQL をインポートするには、そのフォーマットの名前を 1 つ目のパラメータとして指定します (FDBMS、Informix、Interbase、MSSQLServer、MySQL、Oracle、または Sybase)。

  • 次のタイプの SQL をインポートするための個別のインタラクティブ・メソッドが用意されています:FDBMS()Opens in a new tabInformix()Opens in a new tabInterbase()Opens in a new tabMSSQLServer()Opens in a new tabOracle()Opens in a new tab、および Sybase()Opens in a new tab。これらのメソッドは、ターミナルからインタラクティブに実行されます。ターミナルでは、インポート・テキスト・ファイルの場所や、Errors.log ファイルと Unsupported.log ファイルを作成する場所などの情報を指定するように求められます。

  • DDLImportDir()Opens in a new tab を使用すると、同じディレクトリ内の複数のファイルから SQL コードをインポートできます。このメソッドは、バックグラウンド (非インタラクティブ) プロセスとして実行されます。このメソッドは、Informix、MSSQLServer、および Sybase をサポートしています。すべてのインポート対象ファイルには .sql という拡張子接尾語が付加されている必要があります。

  • ImportDir()Opens in a new tab を使用すると、同じディレクトリ内の複数のファイルから SQL コードをインポートできます。このメソッドでは、DDLImportDir() より多くのオプションが用意されています。このメソッドは、バックグラウンド (非インタラクティブ) プロセスとして実行されます。このメソッドは、MSSQLServer と Sybase をサポートしています。許可されるファイル拡張子接尾語のリストを指定できます。

FeedbackOpens in a new tab