首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将mysql数据导入Heroku中的postgresql?(Django项目)

如何将mysql数据导入Heroku中的postgresql?(Django项目)
EN

Stack Overflow用户
提问于 2017-03-29 06:01:57
回答 1查看 2.1K关注 0票数 3

最近,我需要将mysql数据导入Heroku中的postgres数据库。实际上,它包括几个步骤:

  1. 将mysql数据转换为postgresql
  2. 将postgresql数据导入Heroku

在查阅了大量资料并在github中测试了几个工具之后,我终于成功了。在这里,我想分享一些我的经验和参考。

EN

回答 1

Stack Overflow用户

发布于 2017-03-29 06:01:57

首先,我列出了将mysql数据库格式转换为postgresql格式的一些工具。

  1. mysql-postgresql-转换器:我终于使用这个工具成功了。以PostgreSQL兼容格式转储MySQL数据库

mysqldump -u用户名-p -兼容=postgresql> outputfile.sql

然后使用转换器将数据传输到*.psql文件中。然后将新转储加载到一个新的PostgreSQL数据库中。

  1. mysql2postgres:这是Heroku中心引入的一个工具。请参考这里,从MySQL迁移到Heroku的Postgres。它是基于Ruby的。然而,对于我来说,我在完成安装后发现了一些问题,无法解决它。

您已经激活了测试单元2.5.5,但是您的Gemfile需要测试单元3.2.3.#95

  1. Mysql2pgsql:通过编辑用于配置的*.yml文件与上面的mysql2postgres类似的过程。自述文件中有一个很好的引用表,称为数据类型转换图,它比较了MySQL和PostgreSQL之间的不同数据类型。您可以手动修改数据类型。

** 本网站列出了其他一些转换方法。

PostgreSQL中的一些基本操作:

代码语言:javascript
运行
复制
$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 -选择数据库

代码语言:javascript
运行
复制
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数据库:

代码语言:javascript
运行
复制
postgres=# \c testdb;
psql (9.2.4)
Type "help" for help.
You are now connected to database "testdb" as user "postgres".
testdb=# 

创建数据库后,将转换的表导入psql。请注意,在导入数据之前应该创建一个数据库。

代码语言:javascript
运行
复制
$psql -h server -d databasename -U username -f data.sql

(有时应该在psql之前添加sudo -u postgres )

如何使用pg_dump:创建转储文件生成psql转储

代码语言:javascript
运行
复制
$sudo -u postgres pg_dump -Fc --no-acl --no-owner -h localhost -U postgres databasename > mydb.dump

下一步,如何将数据导入Heroku Postgres?在前面的步骤之后,您可以将数据导入本地PostgresSQL或生成pg_dump文件。这里将介绍两种将数据传输到远程Heroku Postgres的方法。

  1. 使用pg_dump文件。参考文献使用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是。

  1. 使用pg:推 pg:push会将数据从本地psql数据库推送到远程Heroku数据库。该命令如下所示: $heroku pg:推送mylocaldb DATABASE_URL --应用寿司

此命令将获取本地数据库"mylocaldb“,并将其推送到应用程序"sushi”上的DATABASE_URL数据库。请注意,在执行pg:push之前,远程数据库必须为空,以防止意外的数据覆盖和丢失。实际上,我使用了这个pg:push方法并最终成功了。

有关Heroku的更多信息可以在Heroku正式文件中找到。

**其他:

  1. 您的web应用程序的查看日志 ( Heroku:heroku logs --tail )
  2. Heroku上的如何部署 Python和Django应用程序?
  3. 如何编写Django应用程序的Procfile?Django项目的公共Procfile如下所示: 网站: gunicorn yourprojectname.wsgi --日志文件-

这里,web是一个单一的进程类型。我们需要修改的是yourprojectname.wsgi。只需在前缀中替换项目名称即可。

  1. 如何将Gunicorn添加到您的应用程序? $ pip安装gunicorn $ pip冻结> requirements.txt
  2. 如何在远程Heroku服务器上运行命令行?您可以在Heroku中执行bash命令。 $heroku运行bash运行bash连接到终端.上升,运行1~$ ls

然后,您可以执行类似于本地bash中的lscd等命令。

此外,您还可以使用此模式中的命令在远程Heroku:manage.py中执行heroku run python manage.py runserver

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43085507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档