

# Aurora PostgreSQL の管理計画のエクスポートとインポート
<a name="AuroraPostgreSQL.Optimize.Maintenance.ExportingImporting"></a>

管理計画をエクスポートしたり、別の DB インスタンスにインポートできます。

**管理計画をエクスポートする**  
承認されたユーザーは `apg_plan_mgmt.plans` テーブルの任意のサブセットを別のテーブルにコピーしてから、`pg_dump` コマンドを使用してそれを保存することができます。次に例を示します。

```
CREATE TABLE plans_copy AS SELECT * 
FROM apg_plan_mgmt.plans [ WHERE predicates ] ;
```

```
% pg_dump --table apg_plan_mgmt.plans_copy -Ft mysourcedatabase > plans_copy.tar
```

```
DROP TABLE apg_plan_mgmt.plans_copy;
```

**管理計画をインポートする**

1. エクスポートした管理計画の .tar ファイルを、計画を復元する予定のシステムにコピーします。

1. tar ファイルを新しいテーブルにコピーするには、`pg_restore` コマンドを使用します。

   ```
   % pg_restore --dbname mytargetdatabase -Ft plans_copy.tar
   ```

1. 次の例に示すように、`plans_copy` テーブルを `apg_plan_mgmt.plans` テーブルとマージします。
**注記**  
場合によっては、あるバージョンの `apg_plan_mgmt` エクステンションからダンプして別のバージョンに復元することがあります。このような場合は、計画テーブルの列が異なる可能性があります。その場合は、SELECT \$1 を使用せず、列に明示的に名前を付けてください。

   ```
   INSERT INTO apg_plan_mgmt.plans SELECT * FROM plans_copy
    ON CONFLICT ON CONSTRAINT plans_pkey
    DO UPDATE SET
    status = EXCLUDED.status,
    enabled = EXCLUDED.enabled,
    -- Save the most recent last_used date 
    --
    last_used = CASE WHEN EXCLUDED.last_used > plans.last_used 
    THEN EXCLUDED.last_used ELSE plans.last_used END, 
    -- Save statistics gathered by evolve_plan_baselines, if it ran:
    --
    estimated_startup_cost = EXCLUDED.estimated_startup_cost,
    estimated_total_cost = EXCLUDED.estimated_total_cost,
    planning_time_ms = EXCLUDED.planning_time_ms,
    execution_time_ms = EXCLUDED.execution_time_ms,
    total_time_benefit_ms = EXCLUDED.total_time_benefit_ms, 
    execution_time_benefit_ms = EXCLUDED.execution_time_benefit_ms;
   ```

1. 管理計画を共有メモリにリロードし、一時的な計画テーブルを削除します。

   ```
   SELECT apg_plan_mgmt.reload(); -- refresh shared memory
   DROP TABLE plans_copy;
   ```