備忘録的プログラミングリファレンス

SQLファイルの読み込みと実行

 SQL ファイルは PostgreSQL のコマンドラインインターフェイスから読み込み、実行することができます。

 SQL ファイルは複数の SQL コマンド を一括して実行することができ、SQL コマンドファイルとも呼ばれます。

 以下は、psql にログイン後に \i コマンドで SQL ファイルを読み込み実行しています。

SQL ファイルの読み込みと実行
$ psql database_name
...
database_name=> \i DataBase/Test/test.sql

 上記の例では、対象となるデータベースは database_name で、SQL ファイルは DataBase/Test/test.sql です。
 読み込むファイルはカレントのディレクトリからたどります。

 psql コマンドの -f オプションでも SQL ファイルを読み込み実行することができます。

- ad -

 以降の内容は SQL ファイルの読み込みと実行の手順を詳しく解説しています。

PostgreSQL コマンドラインインターフェイス

 PostgreSQLのコマンドラインインターフェイスとは、psql コマンドによってログインします。 SQL 構文も実行できるコマンドラインインターフェイスで、PostgreSQL 会話型ターミナルともいいます。

 まずは、psql コマンドで SQL ファイルを読み込み実行する先のデータベースを指定します。以下の例では、database_nameがデータベース名です。

PostgreSQLのコマンドラインインターフェイス
$ psql database_name
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.
...

 指定するデータベースは コマンドラインインターフェイス内の\cコマンドで変更することもできます。 例えば以下のようにします。

\cコマンド
\c other_database

SQL ファイルの読み込みと実行

 PostgreSQL コマンドラインインターフェイスの \i コマンドで SQL ファイルの読み込みその内容を実行ます。以下の例の SQL ファイルはDataBase/Test/test.sqlです。

 読み込み先のデータベース名は確認するようにしましょう。違うデータベースに SQL ファイルを実行しないようにしましょう。
 データベース名は以下の例ではdatabase_nameです。

SQL ファイルの読み込みと実行
database_name=> \i DataBase/Test/test.sql

 読み込みファイルはカレントディレクトリからファイル名で辿ります。

 くれぐれも間違ったデータベースに SQL ファイルを実行しないようにしましょう。初期のテーブル作成でない限りは、事前にデータのバックアップを取るなどの対策をしてから実行したほうがよいかもしれません。

psql コマンド

 psql コマンドの -f オプションでも SQL ファイルを読み込み実行することができます。psql コマンドは OS の端末から実行します。

psql コマンド
$ psql -f DataBase/Test/test.sql -d database_name

 この場合もカレントディクトリからファイルを辿ります。

複数の SQL ファイルの実行

 複数の SQL ファイルをメインの SQL ファイルを通して読み込み実行することができます。

 例えば、以下のように、\i コマンドで複数の SQL ファイルの読み込みと実行を指定する main.sql というファイルを作成します。

main.sql の内容
/* some sql file */
\i example_table00.sql;
\i example_table01.sql;
...

 main.sql ファイルを読み込み実行することで、記載された コマンドが順次実行されます。

main.sql の読み込み
=> \i main.sql
..

example_table00.sql、example_table01.sql ファイルが順次に読み込み実行される。

 読み込む対象のファイルはカレントディレクリであることに注意してください。
 カレントディレクトリの位置を変更するには、都度\cdコマンドを使用するか、ファイル指定で位置を正確に指定してください。