![]() |
|||||||||
![]() |
![]() |
postgres の変更点
#author("2022-01-31T00:51:42+00:00","default:pentacle","pentacle")
* 旧記事 [#h831957f]
[[postgres-old]]
* 移植前準備 [#q71a103c]
旧バージョン postgres が立ち上がっている状態で
pg_dump 【dbname】 > dbname.dump
* install [#nb7e7697]
*** 本体 [#o1143234]
yum install postgresql postgresql-server postgresql-devel
*** php モジュール [#k12c3527]
# apt-get install php-pgsql
*** perl モジュール [#p6831ff8]
yum install perl-DBI-Pg
* pgcommand [#ab882926]
*** フルバックアップ [#se4ccff0]
> pg_dump -Fc -b データベース名 > db_archive.dump
これで、db_archive.dump にデータが出力されます。このファイルはバイナリですが、圧縮されているので、大きなデータベースをバックアップするときには効率的です。また、このデータから復元させるには、次のように行います。
*** リストア [#w591a071]
> createdb -T template0 データベース名
> pg_restore -d データベース名 db_archive.dump
これで、データベースが復元されます。-T template0 は必ず指定してください(理由を知りたい場合は、マニュアルを参照してください)。また pg_dumpall は、全てのデータベースのバックアップを行います。したがって、データベース名を指定する必要はありません。これらのコマンドは、データベースのバージョンアップを行うときにも使用できます。PostgreSQL の場合、バージョンアップを行うと、データベースファイルの互換性がなくなる場合があります。その場合は、これらのコマンドを使ってデータを移行する必要があります。
場合によっては、テーブル単位でバックアップとを取り、テーブル単位でデータを復元したい場合もあるかと思います。テストしてるときとかは、重宝します。それには次のようにします。
*** テーブル単位バックアップ [#c50be44c]
> pg_dump -t テーブル データベース名 > dump.out
*** テーブル単位復元 [#pda3943d]
> psql データベース名 < dump.out
*** COPY の代わりに INSERT 文 [#ve62e625]
''dump''
pg_dump -U 【ユーザ】 【DB】 -t 【テーブル名】 --column-inserts > tablename.sql
''restore''
psql -U 【ユーザ】 【DB】 < tablename.sql
* windows 版 [#r0698710]
export PGHOST=localhost
*** pg_hba [#t9a0d1f9]
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 [#we964f0b]
max_connection=400
lc_messages = 'en_US'
* psql コマンド [#q882f529]
|\d |table一覧 |
|\d 【table名】|tableカラム定義一覧|
|\l |database 一覧 |
|current_date ||
* csv [#a5abac9c]
psql TESTDB -c "COPY (select * from foo) TO '/tmp/foo.csv' (FORMAT csv)"
* 別サーバから繋ぐ [#pabdd5cb]
''/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 [#zc63e7ba]
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 [#mf3aa546]
*** timestamp から時間を取得 [#j35f4691]
extract(hour from datetime)
|
|||||||