DBLinkの作成が完了したら、DBLinkを使用してテーブルやビューなどのリモートデータベースのオブジェクトにアクセスできます。
使用上の制限
現在、OceanBaseデータベースのMySQLテナントからDBLink経由でMySQLデータベースのデータを読み取ることはサポートされていません。また、MySQLデータベースからDBLink経由でOceanBaseデータベースのMySQLテナントのデータを読み取ることもサポートされていません。
MySQLモードでは、DBLinkを使用してアクセスできるデータ型は以下のとおりです:
数値型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL
日付時刻型:DATE、TIME、YEAR、DATETIME、TIMESTAMP
文字列型:CHAR、VARCHAR、TINYBLOB、TINYTEXT、BLOB、TEXT、MEDIUMBLOB、LONGBLOB、LONGTEXT
その他の型:ENUM、SET
注意
OBClientの制限により、現在DBLlinkを使用してテーブルデータを読み取る場合、リモートテーブル内の
ENUM型およびSET型の列はVARCHAR型の列として処理されます。
各データ型の詳細については、データ型の概要を参照してください。
前提条件
DBLinkが作成済みであること。DBLinkの作成手順の詳細については、DBLinkの作成を参照してください。
リモートデータベースのテーブルデータへのアクセス
SELECT... FROM 表名@DBLink 名 の構文を使用して、リモートデータベースのテーブルデータにアクセスします。SQLステートメントは以下のとおりです:
SELECT select_expr_list
FROM table_name@dblink_name
WHERE where_conditions;
select_expr_list:
table_name.*
| table_alias_name.*
| expr [[AS] column_alias_name]
ステートメントの使い方:
select_expr_list:クエリ対象の式または列名を指定します。複数の列は半角カンマ(,)で区切り、アスタリスク(*)はすべての列を示します。table_name.*:指定したテーブルまたはビューからすべての列を選択します。table_alias_name.*:テーブルまたはビューのエイリアスを指定します。expr [[AS] column_alias_name]:クエリ列または式のエイリアスを指定します。ASはオプションです。
table_name@dblink_name:クエリ対象のリモートデータベース内のテーブルを指定します。複数のデータベースは半角カンマ(,)で区切ります。デフォルトでは、DBLink作成時に指定されたデータベース内のテーブルにアクセスします。他のデータベース内のテーブルにアクセスする必要がある場合は、SQLステートメントで指定できます。形式はdatabase_name.table_name@dblink_nameです。where_conditions:フィルター条件を指定します。クエリ結果には条件を満たすデータのみが含まれます。オプションです。
DBLinkに関連するその他のクエリステートメントについては、SELECTステートメントを参照してください。
例:
ob_dblinkという名前のDBLinkを使用して、リモートデータベースのテーブルtbl1のデータを照会します。SELECT * FROM tbl1@ob_dblink;DBLinkを使用して、リモートデータベース
testのテーブルtbl1を読み取り、ローカルデータベースのテーブルtbl1とJoin操作を実行します。SELECT a.c_decimal, b.c_double FROM tbl1 a, tbl1@ob_dblink b WHERE a.c_int = b.c_int;DBLinkを使用して、リモートデータベース
mysql(DBLink作成時に指定したデータベースがtestの場合)のtbl2テーブルを読み取ります。SELECT * FROM mysql.tbl2@ob_dblink;
関連ドキュメント
DBLinkに関連するその他の操作については、以下の情報を参照してください: