PostgreSQLに複数の外部ファイルを読み込ます方法
目次
外部ファイルを使ってレコードを一気に挿入
PostgreSQLをバージョンアップする方法がよくわかっていない。
データを移す方法がよくわからない。なので新バージョンをインストールするたびにレコードを挿入し直している。
バックアップ用のデータはinsert文をそのままSQLファイルにして保存してある。
外部ファイルを一つ一つ読み込ますのは面倒なので複数のファイルを一度に読み込ませている。
複数の外部ファイル
以下はresultデータベースのresultsテーブルに3年分のレース(レガッタ)結果を挿入する例。
次のような3つのファイルがあるとする。
2016result.sql
insert into results (year, rank, crew, time) values (2016,1,'Crew1','08:08.06'), (2016,2,'Crew2','08:11.24'), (2016,3,'Crew3','08:14.41');
2017result.sql
insert into results (year, rank, crew, time) values (2017,1,'Crew1','08:09.06'), (2017,2,'Crew2','08:12.24'), (2017,3,'Crew3','08:15.41');
2018result.sql
insert into results (year, rank, crew, time) values (2018,1,'Crew1','08:10.06'), (2018,2,'Crew2','08:13.24'), (2018,3,'Crew3','08:16.41');
上記3つのファイルを一度に読み込ますためのファイルをつくる。
results2016_2018.sql
\i 2016result.sql \i 2017result.sql \i 2018result.sql
PostgreSQLに複数の外部ファイルを読み込ます手順
- さきほどつくった4つのファイルを同じディレクトリに配置する
- ターミナル/PowerShellでファイルを配置したディレクトリに移動する
- PostgreSQLサーバを起動してresultデータベースに接続する
\i
コマンドでresults2016_2018.sqlファイルを読み込ます
以下はmacOS10での例。データベースへの接続方法は各環境ごとのものとする。
サーバを起動する
$ pg_ctl -D /usr/local/var/postgres -l logfile start
※-l logfile
はログを記録したい場合にお好みで。
resultデータベースに接続する
$ psql result
外部ファイルを読み込ます
result=# \i results2016_2018.sql
これで9件のレコードを一度に挿入できる。
今回の環境
macOS10.14
Ruby 2.5.1p57
PostgreSQL 10.3