Linux shell调用psql执行SQL查询提示-c选项无效如何解决
问题原因
你把-c参数完全放入了PostgreSQL连接字符串的双引号范围内,psql会将引号内的全部内容识别为数据库连接配置项,自然无法识别-c这个命令执行参数,所以会抛出无效选项的报错。
正确写法
将-c参数移出连接字符串的引号,参考如下调整后的代码:
psql "host='localhost' port=xxxx dbname='xxxxx' user='xxxx' password='xxxxx'" -c "sql string"
额外注意事项
-c参数后直接跟SQL语句即可,不需要加等号,加等号反而可能引发解析错误- 如果SQL语句包含特殊符号,可根据情况选择外层用单引号包裹SQL,或对内部特殊符号做转义处理
- 不建议在脚本中明文填写数据库密码,更安全的方式是通过
.pgpass配置文件或PGPASSWORD环境变量传递密码
内容的提问来源于stack exchange,提问作者Nesan Mano
相关产品推荐
相关产品推荐

