1. ホーム
  2. sql

PostgreSQL - データベースユーザ 'postgres' として bash スクリプトからクエリを実行する。

2023-10-04 05:16:22

質問

PostgreSQL データベースに、3 つのカラムを持つテーブルがあります。 c_uid , c_defaultsc_settings . c_uid は単にユーザ名を格納し c_defaults はそのユーザーに関する多くのデータを含む長いテキストです。

の値を選択するステートメントをbashスクリプトから実行しなければなりません。 c_defaults カラムの値を c_uid の値に基づいて、データベースユーザ 'postgres' によって実行される必要があります。

CLI上では以下のようにできます。

[mymachine]# su postgres
bash-4.1$psql
postgres=#\c database_name
You are now connected to database "database_name" as user "postgres".
database_name=#SELECT c_defaults  FROM user_info WHERE c_uid = 'testuser';

しかし、bashスクリプトでこれを実現するにはどうすればよいのでしょうか?

目的は、そのカラムから情報を取得し、それを編集し、そのカラムに書き戻すことです - すべてbashスクリプトを通してです。

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

こちらをお試しください。

#!/bin/bash
psql -U postgres -d database_name -c "SELECT c_defaults  FROM user_info WHERE c_uid = 'testuser'"

あるいは su :

#!/bin/bash
su -c "psql -d database_name -c \"SELECT c_defaults  FROM user_info WHERE c_uid = 'testuser'\"" postgres

また sudo :

#!/bin/bash
sudo -u postgres -H -- psql -d database_name -c "SELECT c_defaults  FROM user_info WHERE c_uid = 'testuser'"