Esiste uno strumento da riga di comando per convertire il database MySQL in PostgreSQL? Vorrei anche sapere se esiste un modo per convertire il database usando il normale mysqldump
comando.
Esiste uno strumento da riga di comando per convertire il database MySQL in PostgreSQL? Vorrei anche sapere se esiste un modo per convertire il database usando il normale mysqldump
comando.
Risposte:
hai provato:
mysqldump --compatible=postgresql dbname > export.sql
quindi fai questo per sfuggire alle virgolette
sed "s/\\\'/\'\'/g" export.sql > export1.sql
potrebbe essere necessario un po 'più di massaggio, quindi guarda più da vicino il doco mysqldump.
mysqldump
ancora risolto . syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
Ecco alcuni strumenti open source che possono essere molto utili:
FromMySqlToPostgreSql
è uno strumento per raggiungere funzionalità e molto facile da usare.
Mappa i tipi di dati, migra vincoli, indici, PK e FK esattamente come erano nel tuo db MySQL.
Sotto il cofano utilizza PostgreSQL COPY, quindi il trasferimento dei dati è molto veloce.
FromMySqlToPostgreSql scritto in PHP (> = 5.4).
pgloader è uno strumento di caricamento dei dati per PostgreSQL, usando il comando COPY. Il suo principale vantaggio rispetto al solo utilizzo
COPY
o \copy
e oltre a utilizzare un Data Wrapper esterno, è il suo comportamento di transazione, in cui pgloader manterrà un file separato di dati rifiutati, ma continuerà a provare a copiare buoni dati nel database. Il comportamento predefinito di PostgreSQL è transazionale, il che significa che qualsiasi riga errata nei dati di input (file o database remoto) interromperà l'intero carico di massa per la tabella. pgloader implementa anche la riformattazione dei dati, un tipico esempio di quella che è la trasformazione dell'aggiornamento e dell'aggiornamento dei datestamp MySQL da 00:00:00 a PostgreSQLNULL
valore (perché il nostro calendario non ha mai avuto un anno zero).
In realtà esiste uno strumento di migrazione gratuito che è abbastanza facile da usare, sviluppato dagli stessi EnterpriseDB. Può essere installato tramite StackBuilder: Migration Toolkit
Recentemente uso uno strumento non gratuito di DBConvert per convertire un database di accesso in postgres e ho trovato che vale la pena spendere i soldi rispetto alla quantità di tempo che ho perso cercando di farlo in modo affidabile gratuitamente. Vendono uno strumento simile per MySQL <-> postgres , che non ho usato, ma potrebbe valere la pena considerare a meno che non siate interessati solo agli strumenti da riga di comando.
Nel caso ti stia chiedendo che non sono affiliato con loro in alcun modo :-)
Ad esempio, è possibile utilizzare la Migrazione guidata di EnterpriseDB.
Può migrare simpaticamente OracleDB. Ma per Mysql, ha alcune limitazioni, ad esempio, non supporta visualizzazioni, trigger, stored procedure.
Per ulteriori informazioni, consultare EDB Migration Toolkit . Non sono sicuro, ma può essere possibile migrare mysql-> oracle-> postgresql salvando le procedure memorizzate (nel caso esistano).
Grep this: Database e SQL Migration Tools
Questo è solo per aggiungere alle risposte esistenti, che mi ha aiutato a trovare questa soluzione. Ho usato FromMySqlToPostgreSql . Tutto quello che devi fare è scaricare ed estrarre FromMySqlToPostgreSql , creare una copia del file di configurazione di esempio, impostare i valori di connessione db al suo interno ed eseguire il file di indice con il comando seguente:
php index.php config.xml
Semplice ma efficace!
Esiste uno strumento opensource che fornisce funzionalità per convertire un db MySQL in db Postgresql inclusi indici, fks e dati.
https://github.com/ggarri/mysql2psql
Questo strumento consente anche di definire le modifiche dello schema in modo da poter eseguire alcuni aggiornamenti allo schema corrente in fase di esecuzione.