Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » リモート・データとバルク・オペレーション » データのインポートとエクスポート » SQL Anywhere へのデータベースの移行

 

sa_migrate システム・プロシージャの使用

sa_migrate システム・プロシージャを使用して、リモート・データを移行します。テーブルや外部キーのマッピングを削除する場合は、拡張メソッドを使用します。

sa_migrate システム・プロシージャを使用したすべてのテーブルの移行

table_name パラメータと owner_name パラメータの両方に NULL を指定すると、データベース内のシステム・テーブルを含む、すべてのテーブルが移行します。また、リモート・データベースで、テーブルの所有者が異なっていても名前が同じ場合、それらのテーブルはターゲット・データベースに移行すると 1 人の所有者に属します。したがって、一度に移行するテーブルは、1 人の所有者に関連付けられたテーブルだけにしてください。

♦  リモート・ユーザのすべてのテーブルの移行
  1. ターゲット・データベースを作成します。データベースの作成を参照してください。

  2. Interactive SQL からターゲット・データベースに接続します。

  3. リモート・サーバを作成してリモート・データベースに接続します。CREATE SERVER 文を使用して、リモート・サーバを作成します。を参照してください。

  4. リモート・データベースに接続するための外部ログインを作成します。この手順は、ユーザがターゲット・データベースとリモート・データベースで異なるパスワードを使用している場合、またはターゲット・データベースで使用しているユーザ ID とは異なるユーザ ID でリモート・データベースにログインする場合にのみ必要です。外部ログインの作成を参照してください。

  5. ターゲット・データベースに移行するテーブルを所有するローカル・ユーザを作成します。新しいユーザの作成を参照してください。

  6. [SQL 文] ウィンドウ枠で、sa_migrate システム・プロシージャを実行します。次に例を示します。

    CALL sa_migrate( 'local_user1', 'rmt_server1', NULL, 'remote_user1', NULL, 1, 1, 1 );

    このプロシージャは複数のプロシージャを順番に呼び出し、指定された基準を使用してユーザ remote_user1 に属するリモート・テーブルをすべて移行します。

ターゲット・データベースに移行後、テーブルをすべて同じユーザによって所有されないようにする場合は、ターゲット・データベース上の所有者ごとに、local_table_owner 引数と owner_name 引数を指定して sa_migrate プロシージャを実行します。

詳細については、sa_migrate システム・プロシージャを参照してください。

sa_migrate システム・プロシージャを使用した個別のテーブルの移行

table-nameowner-name パラメータには、NULL を入力しないでください。両方に NULL を指定すると、システム・テーブルを含む、データベース内のすべてのテーブルが移行します。また、リモート・データベースで、テーブルの所有者が異なっていても名前が同じ場合、それらのテーブルはターゲット・データベースに移行すると 1 人の所有者に属します。一度に移行するテーブルは、1 人の所有者に関連付けられたテーブルだけにすることをおすすめします。

♦  リモート・テーブルをインポートするには、次の手順に従います (修正がある場合)。
  1. ターゲット・データベースを作成します。データベースの作成を参照してください。

  2. Interactive SQL からターゲット・データベースに接続します。

  3. リモート・サーバを作成してリモート・データベースに接続します。CREATE SERVER 文を使用して、リモート・サーバを作成します。を参照してください。

  4. リモート・データベースに接続するための外部ログインを作成します。この手順は、ユーザがターゲット・データベースとリモート・データベースで異なるパスワードを使用している場合、またはターゲット・データベースで使用しているユーザ ID とは異なるユーザ ID でリモート・データベースにログインする場合にのみ必要です。外部ログインの作成を参照してください。

  5. ターゲット・データベースに移行するテーブルを所有するローカル・ユーザを作成します。新しいユーザの作成を参照してください。

  6. sa_migrate_create_remote_table_list システム・プロシージャを実行します。次に例を示します。

    CALL sa_migrate_create_remote_table_list( 'rmt_server1',
         NULL, 'remote_user1', 'mydb' );

    リモート・サーバの名前を指定してください。

    これにより、移行するリモート・テーブルのリストが dbo.migrate_remote_table_list テーブルに設定されます。このテーブルから、移行しないリモート・テーブルのローを削除できます。

    詳細については、sa_migrate_create_remote_table_list システム・プロシージャを参照してください。

  7. sa_migrate_create_tables システム・プロシージャを実行します。次に例を示します。

    CALL sa_migrate_create_tables( 'local_user1' );

    このプロシージャは、dbo.migrate_remote_table_list からリモート・テーブルのリストを取り出し、リストにあるテーブルごとにプロキシ・テーブルとベース・テーブルを作成します。また、移行したテーブルのプライマリ・キー・インデックスもすべて作成します。

    詳細については、sa_migrate_create_tables システム・プロシージャを参照してください。

  8. リモート・テーブルからターゲット・データベース上のベース・テーブルにデータを移行する場合は、sa_migrate_data システム・プロシージャを実行します。次に例を示します。

    次の文を実行します。

    CALL sa_migrate_data( 'local_user1' );

    このプロシージャは、各リモート・テーブルから、sa_migrate_create_tables プロシージャで作成されたベース・テーブルにデータを移行します。

    詳細については、sa_migrate_data システム・プロシージャを参照してください。

    リモート・データベースから外部キーを移行しない場合は、手順 10 に進みます。

  9. sa_migrate_create_remote_fks_list システム・プロシージャを実行します。次に例を示します。

    CALL sa_migrate_create_remote_fks_list( 'rmt_server1' );

    このプロシージャは、dbo.migrate_remote_table_list にリストされている各リモート・テーブルに関連した外部キーのリストを、テーブル dbo.migrate_remote_fks_list に設定します。

    再作成しない外部キー・マッピングを、ローカルのベース・テーブルから削除できます。

    詳細については、sa_migrate_create_remote_fks_list システム・プロシージャを参照してください。

  10. sa_migrate_create_fks システム・プロシージャを実行します。次に例を示します。

    CALL sa_migrate_create_fks( 'local_user1' );

    このプロシージャは、dbo.migrate_remote_fks_list に定義されている外部キー・マッピングをベース・テーブル上に作成します。

    詳細については、sa_migrate_create_fks システム・プロシージャを参照してください。

  11. 移行用に作成されたプロキシ・テーブルを削除する場合は、sa_migrate_drop_proxy_tables システム・プロシージャを実行します。次に例を示します。

    CALL sa_migrate_drop_proxy_tables( 'local_user1' );

    このプロシージャは、移行用に作成したプロキシ・テーブルをすべて削除し、移行プロセスを完了します。

    詳細については、sa_migrate_drop_proxy_tables システム・プロシージャを参照してください。