Ich habe den pg:pull
geschrieben und pg:push
Befehle.
pg:pull
und pg:push
beide verwenden den pg_dump
Befehl und leiten Sie das direkt an pg_restore
weiter (Quellcode). Leider gibt es Probleme mit pg:push,pull
unter Windows zum Zeitpunkt dieser Antwort, September 2014. Diese Probleme sind nicht unüberwindbar. Wenn Sie also später zu dieser Antwort kommen, überprüfen Sie bitte, ob sie möglicherweise behoben wurde.
Die env
Der hier und hier verwendete Befehl ist meiner Meinung nach nicht unter Windows, weshalb Sie die PGUSER- und PGPASSWORD-Sachen ausführen müssen. Allerdings ist der Grund für die env
ist das pg_dump
benötigt andere Umgebungsvariablen als pg_restore
.
Ich habe einmal versucht, das zu beheben, indem ich Popen verwendet habe, um die Befehle unabhängig voneinander einzurichten, und sie dann miteinander verbunden habe, anstatt eine Pipe zu verwenden. Ich konnte es jedoch nicht ganz zum Laufen bringen und musste aufhören.
Ich würde mich sehr freuen, alle Patches zu überprüfen, die den ganzen Weg gehen und dieses Problem beheben, @erwähnen Sie mich einfach in einer Pull-Anfrage an das heroku/heroku-Projekt.
Entschuldigung, dass ich dieses Problem nicht beheben konnte :(
Stattdessen, und bis dies behoben ist, können Sie pg_dump
verwenden und pg_restore
Befehle separat, direkt. Es ist umständlicher als zweistufiger Prozess und das Nachschlagen der Remote-Anmeldeinformationen, aber es würde die Arbeit erledigen. Die verlinkte Quelle im gen_pg_*_command
Methoden zeigen, wie man pg_dump
verwendet und pg_restore
.