CREATE FOREIGN SERVER (SQL)
構文
CREATE [ FOREIGN ] SERVER server-name [ TYPE server-type ]
FOREIGN DATA WRAPPER CSV HOST host-name
CREATE [ FOREIGN ] SERVER server-name [ TYPE server-type ]
FOREIGN DATA WRAPPER JDBC CONNECTION connection-name
[ PUSHDOWN pushdown-type ]
[ id-options ]
[ passthrough-option ]
説明
CREATE FOREIGN SERVER コマンドは、InterSystems SQL が外部サーバと呼ばれる外部データ・ソースへのアクセスに使用できるリモートの場所を定義します。このコマンドは、外部データ・ソースから外部テーブル (ネイティブのテーブルと共に照会できる) にデータを投影するために使用できるメタデータを格納します。さらに、外部サーバが外部ソースのデータにアクセスするために使用するプロトコルを決定する、外部データ・ラッパを定義します。
InterSystems SQL では現在、それぞれ .csv ファイルまたはデータベースから外部データを取得する、'FILE' と 'DB' という 2 つのタイプの外部サーバをサポートしています (オプションで TYPE キーワードを使用して指定)。タイプ 'FILE' の外部サーバはファイル・システム内のファイルにアクセスするのに対し、タイプ 'DB' の外部サーバは事前定義された JDBC 接続を使用して外部データベースにアクセスします。外部サーバのタイプは、外部データ・ラッパによって暗黙的に設定されます。
このコマンドを実行するには、ユーザに %MANAGE_FOREIGN_SERVER の管理特権が必要です。この特権は、GRANT コマンドで付与することができます。
.csv ファイルの外部サーバの作成
.csv ファイルに格納されているデータを読み取って外部テーブルを作成する外部サーバを定義する場合は、CSV 外部データ・ラッパを使用します。この方法で定義された外部サーバは、少なくとも、InterSystems SQL に投影できる .csv ファイルを格納するローカル・ファイル・パスを定義する必要があります。このファイル・パスは、HOST キーワードを使用して指定します。
以下の例では、.csv ファイルにアクセスする外部サーバを作成します。
CREATE FOREIGN SERVER Sample.DumpDir FOREIGN DATA WRAPPER CSV HOST '/data/dumps'
JDBC 接続での外部サーバの作成
外部データベースに格納されているデータを読み取って外部テーブルを作成する外部サーバを定義する場合は、JDBC 外部データ・ラッパを使用します。この方法で定義された外部サーバは、InterSystems SQL のインスタンスと外部データ・ソースを接続する JDBC 接続を指定する必要があります。この接続の名前は、CONNECTION キーワードを使用して指定します。
以下の例では、JDBC 接続の外部サーバを作成します。
CREATE FOREIGN SERVER Sample.Postgres FOREIGN DATA WRAPPER JDBC CONNECTION 'PostgresSQLConnection'
区切り識別子の使用
外部データ・ソースに接続する際は、外部サーバが区切り識別子を受け入れるかどうかを指定することが必要になる場合があります。既定では、プロジェクションの作成時に InterSystems SQL は区切り識別子を外部データベース管理システムに送信できますが、すべてのデータベース管理システムで区切り識別子が許可されるわけではありません。区切り識別子を受け入れない外部データベース管理システムを使用している場合は、CREATE FOREIGN SERVER コマンドの末尾に NODELIMITEDIDS を指定する必要があります。既定の設定では、区切り識別子が許可されます。
引数
server-name
外部サーバの名前。指定する名前は、テーブル名と同様の追加の名前付け制約に従い、有効な識別子とする必要があります。
外部サーバ名は修飾名です。
server-type
外部サーバのタイプ。外部サーバのタイプとして、'DB' または 'FILE' のいずれかを指定できます。各タイプを一重引用符で囲む必要があります。
FOREIGN DATA WRAPPER
外部データ・ラッパは、外部データへのアクセスに使用するプロトコルを記述します。現在、CSV と JDBC の 2 つのオプションがあります。CSV 外部データ・ラッパは、外部サーバが .csv ファイルを処理して、InterSystems IRIS の外部で格納されているデータにアクセスすることを示します。JDBC 外部データ・ラッパは、外部サーバが事前定義の JDBC 接続を使用して、外部データ・ソースにあるデータにアクセスすることを示します。
host-name
CSV 外部データ・ラッパでのみ使用します。host-name は、ファイル・システムで外部データ・ソースとして機能するフォルダの名前を指定します。
host-name は、一重引用符で区切る必要があります。
connection-name
InterSystems IRIS を外部システムに接続する JDBC 接続の名前。一重引用符で囲んで記述します。JDBC 接続の確立の詳細は、"JDBC 経由での SQL ゲートウェイへの接続" を参照してください。
pushdown-type
外部サーバでサポートするプッシュダウン・タイプの名前。有効なオプションは、OFF、BASIC (既定)、ANSI92、EXTENDED、IRIS です。
id-options
外部データ・ソースで区切り識別子を受け入れるかどうかを指定する引数 (省略可)。指定できる値は DELIMITEDIDS または NODELIMITEDIDS です。既定では、外部データ・ソースは区切り識別子を受け入れるように指定されます。
passthrough-option
外部サーバでパススルー・クエリを許可するかどうかを指定する引数 (省略可)。指定できる値は ENABLE PASSTHROUGH または DISABLE PASSTHROUGH です。既定では、サーバはパススルー・クエリを許可します。
プッシュダウン・リファレンス
pushdown-type 引数を使用して、述語の処理を外部データ・ソースにどの程度までプッシュダウンするかを構成できます。述語を外部データ・ソースにプッシュダウンすることで、インスタンス上での処理負荷を削減できます。
プッシュダウン・タイプは、プッシュダウンできるコマンドが少ない順に OFF、BASIC、ANSI92、EXTENDED、IRIS です。
外部データ・ソースに、どの述語もプッシュダウンしません。
他のデータベースで一般にサポートされている個数の述語をプッシュダウンします。
1992 ANSI SQL 標準で明示的に規定されている述語をプッシュダウンします。ほとんどの主要なデータベースでは、このカテゴリで取り上げている操作をすべてサポートしているわけではありません。厳格に制御するには BASIC を使用する必要があります。
すべての ANSI-92 準拠データベースでのサポートが保証されているとは限らない述語をプッシュダウンします。それでも、すべての ANSI92 述語のほかに、広くサポートされている述語 (CASE など) をプッシュダウンします。
DATEADD など、InterSystems IRIS 固有の述語のほとんどをプッシュダウンします。外部サーバが、InterSystems IRIS の別のインスタンスを外部データ・ソースとして、それにアクセスする場合にのみ使用します。
サポートされている述語
| 関数名 | プッシュダウン・レベル | 注 |
|---|---|---|
| ABS | BASIC | |
| ACOS | BASIC | |
| ASCII | EXTENDED | |
| ASIN | BASIC | |
| ATAN | BASIC | |
| ATAN2 | IRIS | |
| CASE | EXTENDED | |
| CAST |
BASIC : BIGINT、CHAR、CHARACTER、INT、INTEGER、NCHAR、SMALLINT、TINYINT ANSI92 : DATE、TIME、TIMESTAMP EXTENDED : DOUBLE IRIS : BIT、CHAR VARYING、CHARACTER VARYING、DATETIME、NVARCHAR、POSIXTIME、SMALLDATETIME、VARCHAR |
外部サーバで使用するプッシュダウン・タイプの許容範囲が広がるに伴い、CAST コマンドでキャストがサポートされるデータ型も多くなります。 |
| CEILING | ANSI92 | Oracle データベースではサポートされません。 |
| CHAR | IRIS | |
| CHARACTER_LENGTH | IRIS | |
| CHARINDEX | IRIS | |
| CONCAT | ANSI92 | Microsoft SQL Server ではサポートされません。 |
| CONVERT |
OFF : MONEY EXTENDED : DOUBLE IRIS : CHAR、CHARACTER、DATE、INTEGER、POSIXTIME、TIME、TIMESTAMP、VARCHAR |
外部サーバで使用するプッシュダウン・タイプの許容範囲が広がるに伴い、CONVERT コマンドでキャストがサポートされるデータ型も多くなります。 |
| COS | BASIC | |
| COT | EXTENDED | |
| CURDATE | IRIS | |
| CURRENT_DATE | IRIS | |
| CURRENT_TIME | IRIS | |
| CIRRENT_TIMESTAMP | EXTENDED | |
| CURTIME | IRIS | |
| DATALENGTH | IRIS | |
| DATE | ANSI92 | |
| DATEADD | IRIS | |
| DATEDIFF | IRIS | |
| DATEPART | IRIS | |
| DAY | IRIS | |
| DAYNAME | IRIS | |
| DAYOFMONTH | IRIS | |
| DAYOFYEAR | IRIS | |
| DECODE | IRIS | |
| DEGREES | ANSI92 | Oracle データベースではサポートされません。 |
| %EXACT | IRIS | |
| EXP | BASIC | |
| %EXTERNAL | IRIS | |
| $EXTRACT | IRIS | |
| $FIND | IRIS | |
| FLOOR | BASIC | |
| GETDATE | IRIS | |
| GETUTCDATE | IRIS | |
| GREATEST | ANSI92 | |
| HOUR | IRIS | |
| INSTR | IRIS | |
| %INTERNAL | IRIS | |
| ISNUMERIC | IRIS | |
| $JUSTIFY | IRIS | |
| LAST_DAY | IRIS | |
| LCASE | BASIC | |
| LEAST | ANSI92 | Microsoft SQL Server ではサポートされません。 |
| LEFT | ANSI92 | Oracle データベースではサポートされません。 |
| LEN | IRIS | |
| LENGTH | IRIS | |
| $LENGTH | IRIS | |
| LOG | ANSI92 | この関数のバリアントで引数が 1 つのものは、Oracle データベースでサポートされません。 |
| LOG10 | ANSI92 | Oracle データベースではサポートされません。 |
| LOWER | EXTENDED | |
| LPAD | ANSI92 | Microsoft SQL Server ではサポートされません。 |
| LTRIM | BASIC | |
| %MINUS | IRIS | |
| MINUTE | IRIS | |
| MOD | ANSI92 | |
| MONTH | IRIS | |
| MONTHNAME | IRIS | |
| NOW | EXTENDED | Microsoft SQL Server ではサポートされません。 |
| PI | EXTENDED | |
| $PIECE | IRIS | |
| %PLUS | IRIS | |
| POSITION | ANSI92 | Oracle データベースと Microsoft SQL Server ではサポートされません。 |
| POWER | BASIC | |
| QUARTER | IRIS | |
| RADIANS | EXTENDED | |
| REPEAT | EXTENDED | |
| REPLACE | EXTENDED | |
| REPLICATE | EXTENDED | |
| REVERSE | EXTENDED | |
| RIGHT | ANSI92 | Oracle データベースではサポートされません。 |
| ROUND | BASIC | |
| RPAD | ANSI92 | Microsoft SQL Server ではサポートされません。 |
| RTRIM | BASIC | |
| SECOND | IRIS | |
| SIGN | EXTENDED | |
| SIN | BASIC | |
| SPACE | IRIS | |
| %SQLSTRING | IRIS | |
| %SQLUPPER | IRIS | |
| SQRT | BASIC | |
| SQUARE | BASIC | |
| STR | IRIS | |
| STRING | IRIS | |
| STUFF | IRIS | |
| SUBSTR | IRIS | |
| SUBSTRING | ANSI92 | Oracle データベースではサポートされません。 |
| SYSDATE | EXTENDED | |
| TAN | BASIC | |
| TIMESTAMPADD | IRIS | |
| TIMESTAMPDIFF | IRIS | |
| TO_CHAR | EXTENDED | |
| TO_DATE | ANSI92 | Microsoft SQL Server ではサポートされません。 |
| TO_NUMBER | ANSI92 | |
| TO_POSIXTIME | IRIS | |
| TO_TIMESTAMP | IRIS | |
| $TRANSLATE | IRIS | |
| TRIM | ANSI92 | Microsoft SQL Server では、TRIM(BOTH <string-expression>) バリアントのみがサポートされます。 |
| TRUNCATE | IRIS | |
| %TRUNCATE | IRIS | |
| UCASE | BASIC | |
| UPPER | BASIC | |
| WEEK | IRIS | |
| YEAR | IRIS |