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に関連するその他の操作については、以下の情報を参照してください: