postgres まとめ:テーブルやDBのコピーとか

2011/10/25

コンソールで使う

# DBに接続
$ psql テーブル名

#接続すると 「テーブル名=# 」というような感じの表記になる。

# クエリをなげる
テーブル名=# ~クエリ~

# DBを切断
テーブル名=# \q

テーブルのコピー

SELECT * INTO 新しいテーブル名 FROM コピーするテーブル名;

DBのコピー(バックアップ)

    新規でDB作成。
    コピー元のバックアップを取る(pg_dump)
    新DBにバックアップを流し込む(pg_restore)

DBのコピー(バックアップ):同一サーバーでまとめてやる

バックアップをどこかに保存とかはせずに直接コピーする。

「新規でDB作成」→「コピー元のバックアップを新DBにバックアップを流し込む」

「元DB」を「新DB」にコピーする場合は下記のような感じ。

$ createdb -U postgres 新DB
$ pg_dump -U postgres -Ft -b 元DB | pg_restore -U postgres -d 新DB

特定のテーブルのみバックアップ

バックアップというより同じものを作るSQLを作って、新しいDBでそのSQLを実行。

「新規でDB作成」→「テーブルを指定してバックアップ用のSQLファイルを作成」→「新DBに作成したSQLファイルを実行してテーブルをコピー」

「元DB」の「テーブル」を「新DB」にコピーする場合は下記のような感じ。

$ createdb -U postgres 新DB
$ pg_dump -d 元DB -t テーブル名 > ファイル名.sql
$ cat ファイル名.sql | psql 新DB

※「-d」はpostgresのバージョンが「8.4.1」では使えない、「8.1.22」では使える。

特定のテーブルのみバックアップ2

postgresのバージョンが「8.4.1」の場合。
他のバージョンは知らないけど多分これで大丈夫だと思う。

「新規でDB作成」→「テーブルを指定してバックアップ用のdmpファイルを作成」→「新DBに作成したdmpファイルをリストア」

「元DB」の「テーブル」を「新DB」にコピーする場合は下記のような感じ。

$ createdb -U postgres 新DB
$ pg_dump -Fc -c -t "テーブル名" 元DB > /ファイル名.dmp
$ pg_restore -d 新DB -v ファイル名.dmp

※テーブル名にはワイルドカード使用OKみたいです。

日付型の比較

カラム「xxx」が昨日以前
xxx < CURRENT_DATE

カラム「xxx」が2011年10月24日以前
xxx < date '2011-10-25'

新着(ニュース関連以外)

2017-07-19
折れ線グラフをもう少しゆるやかに・・・というか何というか・・・調べていくと「移動平均」っていう言葉にたどり着いた
2017-07-10
FuelPHPの1.8をダウンロードして使っていたらセッションが使えないということに気付いた。
2017-06-27
MACにWin10をインストールしてみた:再挑戦。
2017-06-25
「簡単」っていうヤツらが多いけど・・・難しいぞ。
2017-06-06
FuelPHPのOILでtry・catchを使ったらエラーになった。