我想使用heroku pg:push
命令将本地postgresql数据库推送到heroku。该命令如下所示:heroku pg:push mylocaldb DATABASE --app sushi
根据heroku文档:https://devcenter.heroku.com/articles/heroku-postgresql。
这是我的本地数据库信息:
Name: mysitedb
User: bill
Password: bill
我机器中的DATABASE_URL环境变量设置为:postgres://bill:bill@localhost/mysitedb
。
我的应用名称为secure-gorge-4090
。我试过了heroku pg:push mysitedb DATABASE --app secure-gorge-4090
。输出是:
! Remote database is not empty.
! Please create a new database, or use `heroku pg:reset`
我很惊讶我没有把任何东西放进我的数据库中。但我仍然运行heroku pg:reset DATABASE
来重置我的数据库。之后,我再次尝试heroku pg:push mysitedb DATABASE --app secure-gorge-4090
,但输出仍然相同。
我试过了heroku pg:push postgres://bill:bill@localhost:8000/mysitedb DATABASE --app secure-gorge-4090
。输出是:
! LOCAL_SOURCE_DATABASE is not a valid database name
我不知道如何使用此命令将我的本地数据库移动到heroku。我需要你的帮助。谢谢!
答案 0 :(得分:13)
您实际上是在命令中输入了令牌DATABASE
,还是您正在使用这个问题的占位符?来自docs you linked to:
Like pull but in reverse, pg:push will push data from a local database into
a remote Heroku Postgres database. The command looks like this:
$ heroku pg:push mylocaldb HEROKU_POSTGRESQL_MAGENTA --app sushi
This command will take the local database “mylocaldb” and push it to the
database at DATABASE_URL on the app “sushi”. In order to prevent accidental
data overwrites and loss, the remote database must be empty. You will be
prompted to pg:reset an already a remote database that is not empty.
Usage of the PGUSER and PGPASSWORD for your local database is also supported
for pg:push, just like for the pg:pull commands.
执行heroku config -a secure-gorge-4090
后,您应该会看到HEROKU_POSTGRESQL_[SOME COLOR NAME]
的条目。确保您在命令中使用的是令牌而不是DATABASE
。
由于您在本地数据库中拥有用户名和密码,因此您还需要执行有关PGUSER
和PGPASSWORD
的提及部分。以下是pg:pull
文档中的示例:
$ PGUSER=postgres PGPASSWORD=password heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi
所以你应该这样做:
$ PGUSER=bill PGPASSWORD=bill heroku pg:push mysitedb HEROKU_POSTGRESQL_[SOME COLOR] -a secure-gorge-4090
答案 1 :(得分:8)
我知道这是一个古老的讨论,但我遇到了同样的问题。虽然它不太方便,但我设法通过pg:backups来实现这一点。
上非常详细首先安装免费的pgbackups插件:
heroku addons:add pgbackups
然后使用本地pg_dump实用程序备份数据库(包含在PostGreSQL发行版中)
pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dmp
然后将该转储文件放在URL可寻址的位置(例如Dropbox)并运行heroku导入(确保它是Windows的双引号):
heroku pg:backups:restore 'https://dropbox.com/dYAKjgzSTNVp4jzE/mydb.dmp' DATABASE_URL
答案 2 :(得分:2)
您需要以下命令
PGUSER=root PGPWD=root heroku pg:push (local database name) DATABASE_URL --app heroku (app name)
确保您输入了正确的postgres用户名和密码
答案 3 :(得分:0)
我是一个懒惰的程序员,效率很高,所以这比支付 AWS 备份费用更容易,将它们存储在 Excel 表中。 这样可以节省成本,并且不会使用效率不高的 PUSH: PULL。
使用 CMD 作为管理员将 Excel 数据插入到 Heroku Postgres 数据库中。
遵循说明
1. OPEN CMD AS ADMIN
2. heroku pg:sql postgresql-rugged-08088 --app sample
3. CREATE TABLE SERIAL_T ( id SERIAL , SERIAL VARCHAR(50), USE INT, DEVICES TEXT[], PRINTED BOOLEAN, PRIMARY KEY (id))
4. \COPY SERIAL_T (SERIAL, USE, DEVICES, PRINTED) FROM 'C:\Users\PATH\EXCEL-03-27-2021.csv' DELIMITER ','CSV HEADER;