2012-05-04 4 views
1

Я хочу выполнить полный вакуум и переиндексацию в моей базе данных для своего приложения, размещенного на Heroku.База данных Vaccum full и Reindex Heroku

Я не могу решить, как это сделать с помощью командной строки heroku удаленно.

я могу сделать это на моем локальном компьютере Mac OSX с помощью приведенных ниже команд в terminal ...

psql database_name 
>> vaccuum full; 
>> \q 

reindex database database_name 

Как я могу выполнить полную Vaccuum и проиндексировать все мои таблицы для моего приложения на Heroku?

Если возможно, я хотел бы сделать это без экспорта базы данных.

ответ

2

Хорошо, так что кажется, Heroku не поддерживает эту функцию, если вы не платить. Похоже, мне придется вытащить базу данных, выполнить действия и оттолкнуть ее назад! Веселые времена.

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=>

+1

Это только, если вы используете один из более крупных планов PostgreSQL (Ronin +) с Heroku, который начинается с $ 200/mo. – coreyward

+0

или новый Postgres 9.1, который разрешает вход https://postgres.heroku.com/blog/past/2012/4/26/heroku_postgres_development_plan/ –

+0

Спасибо за ответы, я использую бесплатную базу данных, и это коммерческая приложение, которое уже используется, поэтому я не могу позволить себе использовать бета-версию – Norto23

1

Вы также можете передать в параметрах в Psql командной строки или из пакетного файла. Первые инструкции собирают необходимые данные для подключения к вашей базе данных.

В последнем приглашении запрашиваются значения ограничений, которые будут использоваться в предложении WHERE column IN(). Не забудьте одинарные кавычки, если строки и через запятую:

@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, вакуум полный (обратите внимание на написание). Сохранить как cleanUp.sql:

VACUUM FULL; 

В Windows, сохранить весь файл как пакетный файл DOS (.bat), сохраните cleanUp.sql в том же каталоге, и запустить командный файл. Спасибо за Dave Page, EnterpriseDB, за оригинальный сценарий.

Также 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.

+0

. Я использую Postgresql, и он находится на mac os. – Norto23

+0

Вы пытались использовать эмулятор MS-DOS, такой как Boxer? http://www.macupdate.com/app/mac/27440/boxer Для запуска PSQL на Mac OS см. следующую запись: http: //dba.stackexchange.com/questions/3005/how-to-run-psql-on-mac-os-x – MAbraham1

+0

Моя проблема в том, что у меня есть приложение и база данных, хранящиеся на Heroku, и я хочу запускать эти команды через интерфейс командной строки Heroku удаленно , – Norto23

Смежные вопросы