PostgreSQL Dump
スクリプト形式、アーカイブ形式 ダンプ、リストア
スクリプト形式
ダンプ
SQL
--データベース foo をダンプ
pg_dump -U postgres foo > default.dump
--スキーマのみ
pg_dump -U postgres -s foo > schema-only.dump
--データのみ
pg_dump -U postgres -a foo > data-only.dump
--INSERT形式(通常はCOPY形式)
pg_dump -U postgres --inserts foo > inserts.dump
--削除(DROP)コマンド書き出し
pg_dump -U postgres -c foo > clean.dump
--テーブルbarを指定
pg_dump -U postgres -t bar foo > table.dump
--テーブル複数指定
pg_dump -U postgres -t bar -t baz foo > table.dump
--barで始まるテーブルを指定
pg_dump -U postgres -t 'bar*' foo > table.dump
--barで終わるテーブルを指定
pg_dump -U postgres -t '*bar' foo > table.dump
--barが含まれるテーブルを指定
pg_dump -U postgres -t '*bar*' foo > table.dump
--テーブルbar以外
pg_dump -U postgres -T bar foo > exclude-table.dump
--barで始まるスキーマを指定
pg_dump -U postgres -n 'bar*' foo > schema.dump
--barで始まるスキーマ以外
pg_dump -U postgres -N 'bar*' foo > exclude-schema.dump
ダンプ先が未指定であれば画面に出力される。
$ pg_dump -U postgres -t foo --inserts pgdb
--
-- PostgreSQL database dump
--
SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: foo; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
--
CREATE TABLE foo (
foo_id integer NOT NULL,
foo_name text NOT NULL,
foo_category integer,
foo_flg boolean
);
ALTER TABLE public.foo OWNER TO postgres;
--
-- Data for Name: foo; Type: TABLE DATA; Schema: public; Owner: postgres
--
INSERT INTO foo VALUES (100001, 'リンゴ', 1, true);
INSERT INTO foo VALUES (100002, 'バナナ', 1, false);
INSERT INTO foo VALUES (100003, 'ネコ', 2, true);
INSERT INTO foo VALUES (100004, 'イヌ', 2, false);
--
-- PostgreSQL database dump complete
--
リストア
SQL
--データベース foo にダンプをリストア
psql -U postgres foo < restore.dump
--データベース foo から データベース baz に直接ダンプリストア
pg_dump -U postgres foo | psql -U postgres baz
アーカイブ形式
ダンプ
SQL
--アーカイブ形式
pg_dump -U postgres -Fc foo > archive.dump
リストア
SQL
--データベース foo にアーカイブ形式をリストア
pg_restore -U postgres -d foo archive.dump
--元と同名のデータベースを作成し、アーカイブ形式をリストア
pg_restore -U postgres -C -d postgres archive.dump
リストアの内容に合わせて事前に対象のデータベースを作成及び削除しておく。