PostgreSQLで指定されたパスのスクリプトを実行する他の方法
PostgreSQLで指定されたパスのスクリプトを実行する方法
コマンドの構文
psql \i <スクリプトファイルのパス>
オプション
- -f : スクリプトファイルを読み込み、実行します。
- -c : コマンドラインでSQLクエリを実行します。
- -e : 環境変数を設定します。
例
# 現在のディレクトリにある`script.sql`というスクリプトを実行
psql \i script.sql
# `/home/user/data/script.sql`というスクリプトを実行
psql \i /home/user/data/script.sql
# オプションを指定してスクリプトを実行
psql -h localhost -p 5432 -U postgres -W postgres \i /home/user/data/script.sql
注意事項
- スクリプトファイルは、PostgreSQLサーバーがアクセスできる場所に存在する必要があります。
- スクリプトファイルには、データベースへの接続情報を含む必要があります。
- スクリプトファイル内のSQLクエリは、PostgreSQLの構文規則に従っている必要があります。
- 上記の情報は、PostgreSQL 14.5に基づいています。
- 使用しているPostgreSQLのバージョンによって、コマンドの構文やオプションが異なる場合があります。
# create_table.sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
# コマンド
psql \i create_table.sql
/home/user/data/insert_data.sqlというスクリプトを実行
# insert_data.sql
INSERT INTO users (name, email, password)
VALUES ('John Doe', '[email protected]', 'password123'),
('Jane Doe', '[email protected]', 'password456');
# コマンド
psql \i /home/user/data/insert_data.sql
オプションを指定してスクリプトを実行
# コマンド
psql -h localhost -p 5432 -U postgres -W postgres \i /home/user/data/script.sql
このコマンドは、以下のことを行います。
- ホスト名
localhost
、ポート番号5432
、ユーザー名postgres
、パスワードpostgres
を使用してPostgreSQLデータベースに接続します。
# コマンド
PGPASSWORD=mypassword psql \i /home/user/data/script.sql
- 環境変数
PGPASSWORD
にmypassword
という値を設定します。
この方法を使用する利点は、パスワードをコマンドラインに明示的に指定する必要がないことです。
スクリプトファイルの内容を直接実行
# コマンド
psql -h localhost -p 5432 -U postgres -W postgres -c "
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
INSERT INTO users (name, email, password)
VALUES ('John Doe', '[email protected]', 'password123'),
('Jane Doe', '[email protected]', 'password456');
"
PostgreSQLで指定されたパスのスクリプトを実行する他の方法
psqlコマンドの-fオプション
psql -h localhost -p 5432 -U postgres -W postgres -f /home/user/data/script.sql
シェルスクリプト
#!/bin/bash
# PostgreSQLサーバーへの接続
psql -h localhost -p 5432 -U postgres -W postgres
# スクリプトファイルの実行
psql \i /home/user/data/script.sql
Pythonスクリプト
import psycopg2
# PostgreSQLサーバーへの接続
connection = psycopg2.connect(
host="localhost",
port="5432",
database="postgres",
user="postgres",
password="postgres",
)
# スクリプトファイルの内容を読み込み
with open("/home/user/data/script.sql", "r") as f:
script = f.read()
# スクリプトを実行
cursor = connection.cursor()
cursor.execute(script)
cursor.close()
# 接続を閉じる
connection.close()
- 接続を閉じます。
postgresql