最近,我需要将mysql数据导入Heroku中的postgres数据库。实际上,它包括几个步骤:
在查阅了大量资料并在github中测试了几个工具之后,我终于成功了。在这里,我想分享一些我的经验和参考。
发布于 2017-03-29 06:01:57
首先,我列出了将mysql数据库格式转换为postgresql格式的一些工具。
mysqldump -u用户名-p -兼容=postgresql> outputfile.sql
然后使用转换器将数据传输到*.psql
文件中。然后将新转储加载到一个新的PostgreSQL数据库中。
您已经激活了测试单元2.5.5,但是您的Gemfile需要测试单元3.2.3.#95
*.yml
文件与上面的mysql2postgres类似的过程。自述文件中有一个很好的引用表,称为数据类型转换图,它比较了MySQL和PostgreSQL之间的不同数据类型。您可以手动修改数据类型。** 本网站列出了其他一些转换方法。
PostgreSQL中的一些基本操作:
$sudo su - postgres
$createtedb testdb
$psql testdb
=# create user username password ' password ';
-- To change a password:
=# alter role username password ' password ';
=# create database databasename with encoding 'utf8';
如何在postgres中列出所有数据库:PostgreSQL -选择数据库
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | postgres | UTF8 | C | C |
(4 rows)
postgres-#
现在输入下面的命令来连接/选择所需的数据库,这里我们将连接到testdb数据库:
postgres=# \c testdb;
psql (9.2.4)
Type "help" for help.
You are now connected to database "testdb" as user "postgres".
testdb=#
创建数据库后,将转换的表导入psql。请注意,在导入数据之前应该创建一个数据库。
$psql -h server -d databasename -U username -f data.sql
(有时应该在psql之前添加sudo -u postgres
)
如何使用pg_dump:创建转储文件生成psql转储
$sudo -u postgres pg_dump -Fc --no-acl --no-owner -h localhost -U postgres databasename > mydb.dump
下一步,如何将数据导入Heroku Postgres?在前面的步骤之后,您可以将数据导入本地PostgresSQL或生成pg_dump文件。这里将介绍两种将数据传输到远程Heroku Postgres的方法。
pg:backups restore
命令中的原始文件URL:
$ heroku :备份:还原'https://s3.amazonaws.com/me/items/3H0q/mydb.dump‘DATABASE_URL在这种情况下,您应该首先将转储文件上传到具有HTTP可访问URL的某个地方。位于Heroku 推荐使用亚马逊S3的开发中心。DATABASE_URL
表示要还原到的数据库的HEROKU_POSTGRESQL_COLOR_URL
。例如,我的数据库url是。
pg:push
会将数据从本地psql数据库推送到远程Heroku数据库。该命令如下所示:
$heroku pg:推送mylocaldb DATABASE_URL --应用寿司此命令将获取本地数据库"mylocaldb“,并将其推送到应用程序"sushi”上的DATABASE_URL
数据库。请注意,在执行pg:push
之前,远程数据库必须为空,以防止意外的数据覆盖和丢失。实际上,我使用了这个pg:push
方法并最终成功了。
有关Heroku的更多信息可以在Heroku正式文件中找到。
**其他:
heroku logs --tail
)这里,web是一个单一的进程类型。我们需要修改的是yourprojectname.wsgi
。只需在前缀中替换项目名称即可。
bash
命令。
$heroku运行bash运行bash连接到终端.上升,运行1~$ ls然后,您可以执行类似于本地bash中的ls
、cd
等命令。
此外,您还可以使用此模式中的命令在远程Heroku:manage.py
中执行heroku run python manage.py runserver
。
https://stackoverflow.com/questions/43085507
复制相似问题