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.)

Foi útil?

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 .

  1. Instale o mysql2psql gem usando [sudo] gem install mysql2psql.
  2. Criar um arquivo de configuração, executando mysql2psql. Você verá um erro, mas um arquivo mysql2psql.yml deveria ter sido criado.
  3. Editar mysql2psql.yml
  4. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top