1. ホーム
  2. postgresql

[解決済み] コマンドライン引数でPostgreSQLの.sqlファイルを実行する

2022-03-16 13:39:26

質問

何千ものINSERT文を含むいくつかの.sqlファイルを持っており、テーブルに追加するためにPostgreSQLデータベースでこれらの挿入を実行する必要があります。ファイルが非常に大きいため、ファイルを開いてINSERT文をエディタウィンドウにコピーし、そこで実行することは不可能です。インターネットで、PostgreSQLのインストール先のbinフォルダーに移動して、以下を使用できることを知りました。

psql -d myDataBase -a -f myInsertFile

私の場合

psql -d HIGHWAYS -a -f CLUSTER_1000M.sql

その後、ユーザーのパスワードを聞かれますが、何も入力できず、エンターキーを押すとこのようなエラーが表示されます。

psql: FATAL: ユーザー "myUsername" のパスワード認証に失敗しました。

なぜパスワードを入力させてくれないのでしょうか。これらのスクリプトを実行できることが重要なので、これを回避する方法はありますか?

pg_hba.confファイルに以下のような構成で新しいエントリーを追加することで、この問題を回避することができました。

# IPv6 local connections:
host    myDbName    myUserName ::1/128    trust

pg_hba.confファイルは通常、PostgreSQLをインストールした'data'フォルダにあります。

どのように解決するのですか?

パスワードの入力は4つの選択肢があります。

  1. 環境変数PGPASSWORDを設定する。詳しくはマニュアルをご覧ください。
    http://www.postgresql.org/docs/current/static/libpq-envars.html
  2. パスワードの保存に .pgpass ファイルを使用します。詳しくはマニュアルをご覧ください。
    http://www.postgresql.org/docs/current/static/libpq-pgpass.html
  3. 特定のユーザーに対して、"trust authentication"を使用します。 http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
  4. PostgreSQL 9.1以降では、次のようなことも可能です。 接続文字列を使用する :
    https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING