我在其中有3列我的PostgreSQL数据库中的表- c_uid,c_defaults和c_settings。c_uid只是存储用户名,并且c_defaults是一长段文本,其中包含该用户的大量数据。
c_uid
c_defaults
c_settings
我必须从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:
su
#!/bin/bash su -c "psql -d database_name -c \"SELECT c_defaults FROM user_info WHERE c_uid = 'testuser'\"" postgres
还有sudo:
sudo
#!/bin/bash sudo -u postgres -H -- psql -d database_name -c "SELECT c_defaults FROM user_info WHERE c_uid = 'testuser'"