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'

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

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい