Existe uma ferramenta simples para converter mysql para postgresql sintaxe?
-
01-07-2019 - |
Pergunta
Eu tentei as ferramentas listadas aqui , alguns com mais sucesso do que outros, mas nenhum me deu postgres válidos sintaxe eu poderia usar (erros tINYINT etc.)
Solução
Há uma opção mysqldump
que torna saída de código PostgreSQL:
mysqldump --compatible=postgresql ...
Outras dicas
Depois de algum tempo no Google eu encontrei este post .
- Instale o mysql2psql gem usando
[sudo] gem install mysql2psql
. - Criar um arquivo de configuração, executando
mysql2psql
. Você verá um erro, mas um arquivomysql2psql.yml
deveria ter sido criado. - Editar
mysql2psql.yml
- Executar
mysql2psql
novamente para migrar seus dados.
Dica:. Set force_truncate
para true
em seu arquivo de configuração mysql2psql.yml
se quiser que o banco de dados PostgreSQL a ser apuradas antes de migrar seus dados
Eu usei py-mysql2pgsql . Após a instalação precisa apenas de arquivo de configuração simples em formato yml (origem, destino), por exemplo:.
# 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
Uso:
> 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.
Mais sobre a sua home page https://github.com/philipsoutham/py-mysql2pgsql .
Há um pedaço de software de pagamento listado nesta página PostgreSQL: http://www.postgresql.org/download/products/1
e este está em pgFoundry: http://pgfoundry.org/projects/mysql2pgsql/
listas Esta página as diferenças de sintaxe, mas uma simples consulta trabalhando conversor i não tem encontrado ainda. Usando um ORM pacote em vez do SQL cru poderia evitar esses problemas.
Atualmente estou cortando-se um conversor para uma base de código legado:
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
}
Para instruções CREATE
, SQLINEs convertidos a maioria deles online. Eu ainda tinha de editar o mysqldump depois, no entanto:
"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.
Tente este, ele funciona como charme !!
http://www.sqlines.com/online
Tenha um olhar em PG Foundry , utilitários extra para Postgres tendem a viver lá. Eu acredito que a ferramenta que você está procurando não existir embora.
você provavelmente nunca terá uma ferramenta para essa tarefa, que faria todo o seu trabalho para você. estar preparado para fazer algum trabalho de refatoração si mesmo.