REINDEX
我为数据库中的索引编写了一个脚本。这是其中之一:
echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE}
psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;"
if [[ ${?} -eq 0 ]]; then
echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE}
else
echo "reindex for unq_vbvdata_vehicle failed" >> ${LOG_FILE}
exit 1
fi
问题是我无法在独立模式下运行此脚本。psql
每次运行都提示密码。还有两个限制:
我无法在没有密码的数据库上创建用户。
因为
REINDEX
锁表,我应该sleep <num>
在 each 之间使用REINDEX
。
有没有自动解决方案?
关于密码提示,您有四种选择:
http ://www.postgresql.org/docs/current/static/libpq-envars.html
http ://www.postgresql.org/docs/current/static/libpq-pgpass.html
http ://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
http ://www.postgresql.org/docs/current/static/libpq-connect.html#AEN42532
一个简单的例子
PGPASSWORD
是这样的:希望能帮助到你。
根据您的帐户权限,未指定数据库的示例可能会失败,因为会根据您连接的数据库检查用户权限。最好也明确指定数据库。
在Windows中,您可以在系统范围内设置它:
或者为了安全起见,如果您不希望在系统范围内使用它,您可以在一行中登录:
在这个线程中非常有用的答案。我只是为 ubuntu 18.04 添加这个:
这将带您进入没有密码提示的 postgres,而无需设置任何环境变量。这不是永久设置。
它会起作用的。