接続サービスファイルにより、libpq接続パラメータをひとつのサービス名に関連付けることができます。
サービス名は、libpq接続文字列によって指定され、関連付けられた設定が利用されます。
これは、接続パラメータをlibpqを使用するアプリケーションの再コンパイルをせずに修正できるというものです。
サービス名はPGSERVICE環境変数を利用することで使用できます。
サービス名は、ユーザ単位のサービスファイルまたはシステム全体のファイルのいずれかで定義できます。
ユーザとシステムファイルの両方に同じサービス名が存在する場合は、ユーザファイルが優先されます。
デフォルトでは、ユーザ単位のサービスファイルは~/.pg_service.confにあります。
Microsoft Windowsでは、%APPDATA%\postgresql\.pg_service.confという名前です(%APPDATA%は、ユーザプロファイル内のApplication Dataサブディレクトリです)。
これは環境変数PGSERVICEFILEを設定することで上書きできます。
システム全体のファイルはpg_service.confという名前です。
デフォルトでは、PostgreSQLインストールのetcディレクトリに検索されます(このディレクトリを正確に識別するにはpg_config--sysconfdirを使用します)。
環境変数PGSYSCONFDIRを設定することで、別のディレクトリを指定できますが、異なるファイル名は指定できません。
どちらのサービスファイルも「INIファイル」書式を使用します。 セクション名がサービス名となり、パラメータが接続パラメータです。 34.1.2のリストを参照してください。 以下に例を示します。
# comment [mydb] host=somehost port=5433 user=admin
例となるファイルがPostgreSQLインストールのshare/pg_service.conf.sampleにあります。
サービスファイルから取得された接続パラメータは、他のソースから取得されたパラメータと組み合わされます。
サービスファイルの設定は、対応する環境変数を上書きし、接続文字列で直接指定された値によって上書きすることができます。
たとえば、上記のサービスファイルを使用すると、接続文字列service=mydb port=5434は、hostsomehost、port5434、useradmin、および環境変数または組み込みデフォルトで設定されたその他のパラメータを使用します。