我已经尝试了列出here的工具,其中一些比其他工具更成功,但没有一个给我有效的postgres语法我可以使用(tinyint错误等)。
答案 0 :(得分:10)
有mysqldump
选项使其输出PostgreSQL代码:
mysqldump --compatible=postgresql ...
答案 1 :(得分:3)
在Google上停留一段时间后,我找到了this post。
[sudo] gem install mysql2psql
安装mysql2psql gem。mysql2psql
创建配置文件。您将看到错误,但应创建mysql2psql.yml
文件。mysql2psql.yml
mysql2psql
以迁移您的数据。提示:如果您希望在迁移数据之前清除postgresql数据库,请在force_truncate
配置文件中将true
设置为mysql2psql.yml
。
答案 2 :(得分:1)
我使用了py-mysql2pgsql。安装后,它只需要yml格式的简单配置文件(源,目标),例如:
# if a socket is specified we will use that
# if tcp is chosen you can use compression
mysql:
hostname: localhost
port: 3306
socket: /tmp/mysql.sock
username: mysql2psql
password:
database: mysql2psql_test
compress: false
destination:
# if file is given, output goes to file, else postgres
file:
postgres:
hostname: localhost
port: 5432
username: mysql2psql
password:
database: mysql2psql_test
用法:
> py-mysql2pgsql -h
usage: py-mysql2pgsql [-h] [-v] [-f FILE]
Tool for migrating/converting data from mysql to postgresql.
optional arguments:
-h, --help show this help message and exit
-v, --verbose Show progress of data migration.
-f FILE, --file FILE Location of configuration file (default:
mysql2pgsql.yml). If none exists at that path,
one will be created for you.
答案 3 :(得分:0)
此postgresql页面上列出了一个付费软件: http://www.postgresql.org/download/products/1
这是在pgFoundry: http://pgfoundry.org/projects/mysql2pgsql/
答案 4 :(得分:0)
This page列出了语法差异,但还没有找到一个简单的工作查询转换器。使用ORM包而不是原始SQL可以防止这些问题。
我目前正在为传统代码库破解转换器:
function mysql2pgsql($mysql){
return preg_replace("/limit (\d+), *(\d+)/i", "limit $1 offset $2", preg_replace("/as '([^']+)'/i", 'as "$1"', $mysql)); // Note: limit needs order
}
对于CREATE
语句,SQLines会将大部分语句转换为在线语句。之后我仍然需要编辑mysqldump:
"mediumtext" -> "text", "^LOCK.*" -> "", "^UNLOCK.*" -> "", "`" -> '"', "'" -> "''" in 'data', "0000-00-00" -> "2000-01-01", deduplicate constraint names, " CHARACTER SET utf8 " -> " ".
"int(10)" -> "int" was missed in the last table, so pass that part of the mysqldump through http://www.sqlines.com/online again.
答案 5 :(得分:0)
尝试这个,它就像魅力一样!
http://www.sqlines.com/online
答案 6 :(得分:0)
在 Debian 和相关设备上安装 pgloader:
sudo apt install pgloader
以 postgres 用户身份登录并创建数据库
sudo su postgres
createdb -O user db_migrated
将数据从mysql数据库传输到postgresql
pgloader mysql://user@localhost/db postgresql:///db_migrated
还要检查 Dimitri Fontaine's rewrite of pgloader from python to common lisp 以便他可以实现真正的线程。
答案 7 :(得分:-1)
看看PG Foundry,Postgres的额外工具往往住在那里。我相信你所寻找的工具确实存在。
答案 8 :(得分:-1)
你很可能永远不会得到一个可以完成你所有工作的工具。准备好自己做一些重构工作。