Estou desesperadamente procurando por uma ferramenta de conversão para converter um grande banco de dados mysql no postgresql. Eu preciso que a ferramenta / script seja:
- Livre
- Funciona com Linux
- Simples de usar e não de buggy
- Você realmente tentou e confirma que funciona
- De preferência, não escrito com Java ou Ruby
Eu tentei diferentes ferramentas listadas aqui , mas nenhuma funcionou para mim.
Agradeço antecipadamente.
mysql
postgresql
linux
hbp
fonte
fonte
Respostas:
A migração entre dois DBMS muito diferentes requer muito mais do que apenas a migração dos dados. Mas a migração dos dados é geralmente a parte mais fácil.
Do jeito que tentei, que é gratuito e posso confirmar que funciona:
A importação dos dados pode ser realmente difícil se você confiar no comportamento do MySQL para aceitar dados ilegais (como 31 de fevereiro)
Meu palpite é que isso será mais rápido do que procurar uma ferramenta, avaliar várias delas e tentar entender a que você escolheu. Mas isso depende de que tipo de "grande" você está se referindo. Se grande for várias centenas de tabelas, isso pode não ser viável. Se grande se referir apenas ao número de linhas, provavelmente esta é a maneira mais rápida de fazer isso.
Existem algumas ferramentas por aí que podem despejar um esquema de banco de dados em um formato independente de DBMS (XML), como Liquibase , SchemaSpy ou WbSchemaReport . Com o Liquibase provavelmente sendo o mais fácil de usar. Os outros exigirão algum trabalho manual para escrever / estender o XSLT para transformar o XML gerado.
Se você estiver usando gatilhos e procedimentos armazenados em MySQL, eu não acredito que haverá qualquer ferramenta automatizada que podem traduzi-los sem a necessidade de uma grande fixação manual do depois - e, em seguida, os procedimentos gerados provavelmente não utilizar qualquer das funções avançadas dos SGBD alvo .
fonte
Tive que fazer isso recentemente e como levaria muito tempo para procurar uma ferramenta e poder fazer coisas com ela, eu fiz isso manualmente com vim e substituto-foo
INT NOT NULL AUTO_INCREMENT
(ou algo assim) porSERIAL
TEXT
(nenhum diferença de velocidade em utilizaçãoTEXT
,VARCHAR
ou semelhante)`
ENGINE InnoDB
(ou o que for)UNSIGNED
BYTEA
'
e nada maisCONCAT
como um fallback para concatenação de strings não padrão, antes do 9.1 ele ser feito usando'string' || ' string'
"
Cada uma dessas balas deve ser feita com uma única substituição.
Exportei o esquema e os dados separadamente . Certifique-se de usar
INSERT
s em vez deCOPY
. Se não houver nada de lance, os dados devem exigir (quase) nenhuma limpeza. Verifique se está tudo ligadoUTF-8
. Com 2 arquivos separados, o esquema fica mais gerenciável e você não tem um arquivo de 1 GB para editar.Ao carregar o esquema, você obtém informações bastante detalhadas onde há um erro, portanto, a depuração deve ser bem simples.
fonte
Estou jogando isso lá fora, nunca tendo tentado, mas o Tungesten Replicator pode fazer o que você deseja. É principalmente uma ferramenta de replicação, mas acho que pode ter um processo de inicialização que pode ajudá-lo pelo menos com o pedaço de dados.
fonte