プロキシ・テーブルを使用したデータのマイグレート

概要:この文書では、プロキシ・テーブルとリモート・サーバを使用して、SQL Anywhere 5.5.x のデータベースから Adaptive Server Anywhere (SQL Anywhere) 7.0.x のデータベースにデータをマイグレートする方法を説明します。

この文書では、プロキシ・テーブルとリモート・サーバを使用して、SQL Anywhere 5.5.x のデータベースから Adaptive Server Anywhere (SQL Anywhere) 7.0.x のデータベースにデータをマイグレートする方法を説明します。この方法を実行するには、両方のバージョンのソフトウェアがインストールされている必要があります。ただし、次の手順を変更し、Adaptive Server Anywhere (SQL Anywhere) 7 のデータベース間でデータをマイグレートする、または Adaptive Server Anywhere (SQL Anywhere) 6 のデータベースから Adaptive Server Anywhere (SQL Anywhere) 7 のデータベースにデータをマイグレートすることもできます。

バージョン 7.0.2 以降の Adaptive Server Anywhere (SQL Anywhere) には、sa_migrate というストアド・プロシージャがあります。このプロシージャを使用すると、ここで説明する方法よりも簡単にデータをマイグレートできます。

1. 次のコマンドを使用して、Adaptive Server Anywhere (SQL Anywhere) 7 データベースを作成します。

dbinit destination.db

2. 次のコマンドを使用して、SQL Anywhere 5.5.x データベースを作成します。

dbinit source.db

3. 次のコマンドを使用して、destination.db を起動します。

dbeng7 destination.db

4. 次のコマンドを使用して、source.db を起動します。

dbeng50 source.db

5. Interactive SQL (ISQL) を使用して、destination.db に接続します。

6. destination.db に接続した状態で、ISQL で次のコマンドを実行します。

CREATE TABLE employees ( id integer, rep char(40) );
CREATE TABLE result (id integer, rep char(40), company_name char(40) );

INSERT INTO employees VALUES( 1, ‘Eric’);
INSERT INTO employees VALUES( 2, ‘Ali’);
INSERT INTO employees VALUES( 3, ‘Rob’);
COMMIT;

7. ISQL を使用して、source.db に接続します。

8. source.db に接続した状態で、ISQL で次のコマンドを実行します。

CREATE TABLE company ( id integer, company_name char(40) );

INSERT INTO company VALUES( 1, ‘Sybase’);
INSERT INTO company VALUES( 2, ‘iAnywhere’);
INSERT INTO company VALUES( 3, ‘Financial Fusion’);
COMMIT;

9. SQL Anywhere 5.0 ドライバを使用して、システムの ODBC データソースを作成します。
このデータソース名は ASAproxy とします。次の値を入力して、このデータソースを設定します。

ユーザ ID:dba
パスワード:sql
サーバ:source
データベース名:source

10.destination.db にまだ接続していない場合は、ISQL を使用して destination.db に接続します。

11.destination.db に接続した状態で、ISQL で次のコマンドを実行し、migration_source という名前の Adaptive Server Anywhere (SQL Anywhere) リモート・サーバを作成します。

CREATE SERVER migration_source CLASS ‘asaodbc’ using ‘ASAproxy';

これで、手順 9 で作成した ASAproxy データソースを使用し、destination.db から source.db にアクセスできます。

12.destination.db に接続した状態で、ISQL で次のコマンドを実行し、prox1 というプロキシ・テーブルを作成して company テーブル内のすべてのカラムを取得し、それらを prox1 テーブルに格納します。

CREATE EXISTING TABLE prox1 AT ‘migration_source…company';

13.次のコマンドを発行して、すべてのレコードがプロキシ・テーブルにあることを確認します。

SELECT * FROM prox1;

14.手順 6 で destination.db に作成したテーブルに prox1 テーブルからデータを移動します。ID がプライマリ・キーであり、1 対 1 の関係になっているため、次のコマンドを発行します。

INSERT INTO result
( SELECT a.id, a.rep, p.company_name
FROM prox1 p, employees a
WHERE p.id = a.id );

15.次のコマンドを発行し、prox1 テーブルから結果のテーブルにデータが移動したことを確認します。

SELECT * FROM result;

16.これで、プロキシ・テーブルとリモート・サーバを削除できます。

DROP TABLE prox1
DROP SERVER migration_source

リモート・データベースのアクセス、プロキシ・テーブル、リモート・サーバの詳細については、Adaptive Server Anywhere のマニュアルを参照してください。