真空充满和Reindex Heroku数据库

时间:2012-05-04 01:58:33

标签: ruby-on-rails-3 postgresql heroku

我想在Heroku托管的应用上对我的数据库执行完全真空并重新索引。

我无法通过heroku命令行远程解决这个问题。

我可以通过terminal ...

中的以下命令在我的本地Mac osx机器上执行此操作
psql database_name
>> vaccuum full;
>> \q

reindex database database_name

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

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

3 个答案:

答案 0 :(得分:2)

好吧所以看起来Heroku不支持这个功能,除非你支付。看起来我必须拉动数据库,执行操作并将其推回上游!有趣的时光。

答案 1 :(得分: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=>

答案 2 :(得分: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,check out my other posting if you want to add parameters to your script, that can be evaluated in the SQL. Please vote it up.