2025年11月22日(土) [長年日記]
■ [db] PostgreSQLでデータベースをコピーする
久しぶりにPostgreSQLを使っている。バージョンは18.0。
CREATE TABLE文を使って手軽にデータベースをコピーできることを知ったのでメモ。次のようにすれば、src_dbのコピーとしてdst_dbを作れる。
create database dst_db template src_db;
ただし、別のユーザーが接続中だとエラーになってコピーできないので注意。
マニュアルには次のような説明があった。
また、実際のところCREATE DATABASEのテンプレートとして名前を指定することで、クラスタ内の任意のデータベースをコピーできます。 しかし、この機能は、(まだ)汎用目的の「COPY DATABASE」能力を意図したものではないことを理解しておいてください。 コピー操作の間、他のセッションから元のデータベースに接続することができないという点は大きな制限です。 CREATE DATABASEは、その起動時に他の接続が存在する場合失敗します。 コピー操作中は元のデータベースへの新しい接続を許しません。
[ツッコミを入れる]