PostgreSQL DBのコピー、TABLEのコピー

データベース、テーブルを複製

データベースの複製

SQL

--複製 createdb -E UTF8 -U postgres -T foodb bardb

コピー元

foodb=# \l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限 --------+----------+------------------+--------------------+--------------------+------------ foodb | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | foodb=# \d リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+---------+------------+---------- public | foo | テーブル | postgres public | foo_seq | シーケンス | postgres

createdb(コピー)後

bardb=# \l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限 --------+----------+------------------+--------------------+--------------------+------------ foodb | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | bardb | postgres | UTF8 | Japanese_Japan.932 | Japanese_Japan.932 | bardb=# \d リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+---------+------------+---------- public | foo | テーブル | postgres public | foo_seq | シーケンス | postgres

テーブルの複製

SQL

--単純な複製 CREATE TABLE bar AS SELECT * FROM foo;

コピー元

pgdb=# \d foo テーブル "public.foo" 列 | 型 | 照合順序 | Null 値を許容 | デフォルト --------------+---------+----------+---------------+------------ foo_id | integer | | not null | foo_name | text | | not null | foo_category | integer | | | foo_flg | boolean | | | pgdb=# SELECT * FROM foo; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100001 | リンゴ | 1 | t 100002 | バナナ | 1 | f 100003 | ネコ | 2 | t 100004 | イヌ | 2 | f (4 行)

CREATE TABLE(コピー)後

pgdb=# \d bar テーブル "public.bar" 列 | 型 | 照合順序 | Null 値を許容 | デフォルト --------------+---------+----------+---------------+------------ foo_id | integer | | | foo_name | text | | | foo_category | integer | | | foo_flg | boolean | | | pgdb=# SELECT * FROM bar; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100001 | リンゴ | 1 | t 100002 | バナナ | 1 | f 100003 | ネコ | 2 | t 100004 | イヌ | 2 | f (4 行)

SQL

--カラムを絞り込んで複製 CREATE TABLE bar AS SELECT foo_id,foo_name FROM foo;

CREATE TABLE(コピー)後

pgdb=# \d bar テーブル "public.bar" 列 | 型 | 照合順序 | Null 値を許容 | デフォルト ----------+---------+----------+---------------+------------ foo_id | integer | | | foo_name | text | | | pgdb=# SELECT * FROM bar; foo_id | foo_name --------+---------- 100001 | リンゴ 100002 | バナナ 100003 | ネコ 100004 | イヌ (4 行)

SQL

--空テーブルを複製 CREATE TABLE bar AS SELECT * FROM foo WHERE foo_category = 99;

SELECT結果が0件になる条件を指定する。

CREATE TABLE(コピー)後

pgdb=# \d bar テーブル "public.bar" 列 | 型 | 照合順序 | Null 値を許容 | デフォルト --------------+---------+----------+---------------+------------ foo_id | integer | | | foo_name | text | | | foo_category | integer | | | foo_flg | boolean | | | pgdb=# SELECT * FROM bar; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- (0 行)

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について