1

我想为托管在Heroku.

我不知道如何通过 heroku 命令行远程执行此操作。

我可以在我的本地 Mac osx 机器上通过以下命令在terminal...

psql database_name
>> vaccuum full;
>> \q

reindex database database_name

如何在 Heroku 上为我的应用程序执行完整的 vaccuum 并重新索引我的所有表?

如果可能的话,我想在不导出数据库的情况下这样做。

4

3 回答 3

2

好的,除非您付费,否则 Heroku 似乎不支持此功能。看起来我必须拉数据库,执行操作并将其推回上游!娱乐时间。

于 2012-05-21T22:50:34.377 回答
1

您可以将 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=>

于 2012-05-04T03:38:34.137 回答
1

您还可以在 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 提供原始提示脚本。

还有 Norto,如果您想在脚本中添加参数,请查看我的其他帖子,这些参数可以在 SQL 中进行评估。请投票。

于 2012-05-04T21:12:46.963 回答