我想为托管在Heroku
.
我不知道如何通过 heroku 命令行远程执行此操作。
我可以在我的本地 Mac osx 机器上通过以下命令在terminal
...
psql database_name
>> vaccuum full;
>> \q
reindex database database_name
如何在 Heroku 上为我的应用程序执行完整的 vaccuum 并重新索引我的所有表?
如果可能的话,我想在不导出数据库的情况下这样做。
我想为托管在Heroku
.
我不知道如何通过 heroku 命令行远程执行此操作。
我可以在我的本地 Mac osx 机器上通过以下命令在terminal
...
psql database_name
>> vaccuum full;
>> \q
reindex database database_name
如何在 Heroku 上为我的应用程序执行完整的 vaccuum 并重新索引我的所有表?
如果可能的话,我想在不导出数据库的情况下这样做。
好的,除非您付费,否则 Heroku 似乎不支持此功能。看起来我必须拉数据库,执行操作并将其推回上游!娱乐时间。
您可以将 psql 交互式终端与 Heroku 一起使用。来自Heroku PostgreSQL:
如果你的系统上安装了 PostgreSQL,你可以直接打开一个 psql 控制台到你的远程数据库:
$ heroku pg:psql
Connecting to HEROKU_POSTGRESQL_RED... done
psql (9.1.3, server 9.1.3)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.
rd2lk8ev3jt5j50=>
您还可以在 psql 命令行或批处理文件中传入参数。第一个语句收集连接到数据库的必要详细信息。
最后的提示要求输入约束值,这将在 WHERE 列 IN() 子句中使用。记住要单引号 if 字符串,并用逗号分隔:
@echo off
echo "Test for Passing Params to PGSQL"
SET server=localhost
SET /P server="Server [%server%]: "
SET database=amedatamodel
SET /P database="Database [%database%]: "
SET port=5432
SET /P port="Port [%port%]: "
SET username=postgres
SET /P username="Username [%username%]: "
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h %server% -U %username% -d %database% -p %port% -e -v -f cleanUp.sql
现在在你的 SQL 代码文件中,添加清理 SQL,vacuum full(注意拼写)。将此保存为 cleanUp.sql:
VACUUM FULL;
在 Windows 中,将整个文件保存为 DOS BATch 文件 (.bat),将 cleanUp.sql 保存在同一目录中,然后启动批处理文件。感谢 EnterpriseDB 的 Dave Page 提供原始提示脚本。