首页 > 解决方案 > 添加更多引用嵌套级别的方法(docker + bash + psql)

问题描述

我需要使用单个命令在 docker 中修改 postgreSQL 表中的值。我想在容器中运行这样的东西:

su - postgres -c "psql -c \"\c database_name\" -c \"UPDATE table_name SET value_name = 'value';\""

事实证明这是唯一的方法,因为echo "\c database_name \\ UPDATE table_name SET value_name = 'value';" | psql在我的 postgreSQL 中不起作用导致

invalid command \

我可以做些什么来通过命令在容器中运行它sudo docker exec -it container_name bash -c "*command above*"吗?上面命令周围的引号类型都不能使它工作。先感谢您!

标签: bashpostgresqldockerpsqlquotes

解决方案


您应该能够su通过告诉docker exec自己应该运行哪个用户来避免使用psql。您也可以psql直接运行,而不是执行bash执行它的 shell。

sudo docker exec --user postgres \
  psql -c "\c database_name" -c "UPDATE table_name SET value_name = 'value';"

推荐阅读