我有一个由PHPMyAdmin生成的MySQLdump,我需要将它导入Postgresql数据库,但我不知道这是否可能。我看到有人推荐pgloader,但看到如何做有点混乱。此外,我在windows上,如果它相关的所有。我只需要表,所以我不关心旧数据库或新数据库中的数据。也不是很大,只有84张table,但足够我写了。谢谢你,谢谢你
wnavrhmk1#
您可以使用pgloader。您需要对它执行install,然后运行一个简单的lisp脚本(script.lisp),其中包含以下3行:
script.lisp
/* content of the script.lisp */ LOAD DATABASE FROM mysql://dbuser@localhost/dbname INTO postgresql://dbuser@localhost/dbname; /*run this in the terminal*/ pgloader script.lisp
之后,PostgreSQL数据库将包含MySQL数据库中的所有信息。
zxlwwiss2#
有很多资源可以做到这一点。没有一个是简单的。
pgloader
--compatible=postgres
mysqldump --tables
COPY
如果你的MySQL数据库包含视图或存储例程(过程、函数、触发器或事件),那么一般来说它们不能被任何工具转换。存储例程的PostgreSQL语言与MySQL有很大的不同。你必须从头开始,在PostgreSQL中编写执行等效逻辑的例程,但以更符合PostgreSQL的方式编写。
2条答案
按热度按时间wnavrhmk1#
您可以使用pgloader。
您需要对它执行install,然后运行一个简单的lisp脚本(
script.lisp
),其中包含以下3行:之后,PostgreSQL数据库将包含MySQL数据库中的所有信息。
zxlwwiss2#
有很多资源可以做到这一点。没有一个是简单的。
pgloader
是本页列出的众多工具之一:https://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#MySQL--compatible=postgres
,但不要依赖它。它对输出做了一些修改,但不足以完全兼容PostgreSQL语法。mysqldump --tables
将表转储到CSV文件,而不是转储到SQL格式。然后,您可以使用PostgreSQL中的COPY
语句逐个批量加载CSV文件。如果你的MySQL数据库包含视图或存储例程(过程、函数、触发器或事件),那么一般来说它们不能被任何工具转换。存储例程的PostgreSQL语言与MySQL有很大的不同。你必须从头开始,在PostgreSQL中编写执行等效逻辑的例程,但以更符合PostgreSQL的方式编写。