旧記事†
postgres-old
移植前準備†
旧バージョン postgres が立ち上がっている状態で
pg_dump 【dbname】 > dbname.dump
install†
yum install postgresql postgresql-server postgresql-devel
php モジュール†
# apt-get install php-pgsql
perl モジュール†
yum install perl-DBI-Pg
pgcommand†
フルバックアップ†
pg_dump -Fc -b データベース名 > db_archive.dump
これで、db_archive.dump にデータが出力されます。このファイルはバイナリですが、圧縮されているので、大きなデータベースをバックアップするときには効率的です。また、このデータから復元させるには、次のように行います。
リストア†
createdb -T template0 データベース名
pg_restore -d データベース名 db_archive.dump
これで、データベースが復元されます。-T template0 は必ず指定してください(理由を知りたい場合は、マニュアルを参照してください)。また pg_dumpall は、全てのデータベースのバックアップを行います。したがって、データベース名を指定する必要はありません。これらのコマンドは、データベースのバージョンアップを行うときにも使用できます。PostgreSQL の場合、バージョンアップを行うと、データベースファイルの互換性がなくなる場合があります。その場合は、これらのコマンドを使ってデータを移行する必要があります。
場合によっては、テーブル単位でバックアップとを取り、テーブル単位でデータを復元したい場合もあるかと思います。テストしてるときとかは、重宝します。それには次のようにします。
テーブル単位バックアップ†
pg_dump -t テーブル データベース名 > dump.out
テーブル単位復元†
psql データベース名 < dump.out
COPY の代わりに INSERT 文†
dump
pg_dump -U 【ユーザ】 【DB】 -t 【テーブル名】 --column-inserts > tablename.sql
restore
psql -U 【ユーザ】 【DB】 < tablename.sql
windows 版†
export PGHOST=localhost
pg_hba†
windows
/cygdrive/c/Program Files/PostgreSQL/9.4/data
pg_hba
host all all 127.0.0.1/32 md5
postgres.conf
listen_addresses = '*'
postgres.conf†
max_connection=400
lc_messages = 'en_US'
psql コマンド†
\d | table一覧 |
\d 【table名】 | tableカラム定義一覧 |
\l | database 一覧 |
current_date | |
csv†
psql TESTDB -c "COPY (select * from foo) TO '/tmp/foo.csv' (FORMAT csv)"
別サーバから繋ぐ†
/var/lib/pgsql/9.6/data/postgresql.conf
listen_addresses = 'localhost,【自分のIPアドレス】'
/var/lib/pgsql/9.6/data/pg_hba.conf
host all all 【アクセス元】/32 password
createuser -U postgres 【ユーザ名】
psql -U postgres -c "alter role 【ユーザ名】 with password '【パスワード】';"
通信路は暗号化した方が良い
http://shinsuke789.hatenablog.jp/entry/2017/10/17/100000
psql cygwin†
wget https://ftp.postgresql.org/pub/source/v9.6.3/postgresql-9.6.3.tar.gz
wget https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz
tar xzfp postgres*tar.gz
cd postgres*
./configure --enable-nls --enable-thread-safety
cd src/bin
make; make install
sql snipet†
timestamp から時間を取得†
extract(hour from datetime)