2009-09-02 10 views
14

Mi sono guardato intorno e non riesco a trovare nulla che risponda a questa domanda specifica.migrare i dati da MS SQL a PostgreSQL?

Qual è il modo più semplice per spostare i dati da un DB di MS SQL Server 2005 a un'installazione Postgres (8.x)?

Ho esaminato diverse utilità come "Full Convert Enterprise", ecc. E tutte falliscono per un motivo o per l'altro, che vanno da strani errori che fanno esplodere l'inserimento di null invece dei dati effettivi (w?) .

sto guardando un DB con tutto tavolo ad eccezione di un unico punto di vista, non procs memorizzati, funzioni, ecc

A questo punto che sto per scrivere un piccolo programma di utilità di farlo per me, Non riesco a credere che sia necessario. Sicuramente c'è qualcosa da da qualche parte che può fare questo? Non sono nemmeno troppo preoccupato per il costo, sebbene sia preferibile gratis :)

risposta

6

Dai uno sguardo allo Software Catalogue. Sotto Administration/development tools vedo DBConvert for MS SQL & PostgreSQL. Probabilmente ci sono altri strumenti simili elencati.

+1

perfetto, questo è esattamente quello che stavo cercando. L'ho preso per un test drive, mi è piaciuto così ho acquistato la versione completa e funziona come un campione. Per coloro che non cercano questa soluzione specifica, ma soluzioni simili, offrono strumenti per la conversione e la sincronizzazione tra MSSQL, Postgres, Oracle, MS Access, Firebird, ecc. Posso solo parlare delle conversioni MSSQL/Postgres, ma se quelle conversioni sono qualsiasi indicazione, questo pacchetto software vale la pena $ 79. – Fred

+0

@Milen A. Radev, +1 Ottimo! – Meem

-1

Bene ci sono collegamenti .NET per MS SQL Server 2005 (ovviamente) e anche per PostgreSQL. Quindi basterebbero poche righe di codice per codificare un programma che potrebbe trasferire i dati in sicurezza da uno all'altro. La vista dovrebbe probabilmente essere eseguita manualmente poiché Postgres non utilizza la stessa lingua per le viste come SQL Server.

+0

sì, ma ci vorrà molta manutenzione per stare al passo con il tempo, preferirei qualcosa che non mi richiedesse di immergermi nel codice ogni volta che lo schema del DB cambia. e se lo sto rendendo generico allora non diventa così semplice come ora devo prendere decisioni basate su tipi di dati, ecc. – Fred

+0

Beh, non penso che ci sarà un percorso facile. Vedi qui http://wiki.postgresql.org/wiki/Microsoft_SQL_Server_to_PostgreSQL_Migration_by_Ian_Harding per alcuni dei problemi coinvolti. È molto più probabile che tu possa codificare qualcosa che funziona nella tua situazione piuttosto che qualcuno sarà in grado di creare uno strumento che funzioni per tutti. –

4

È possibile utilizzare la funzionalità MS DTS (rinominata in SSIS nell'ultima versione, a mio avviso). Un problema con il DTS è che non sono stato in grado di farlo eseguire un commit dopo ogni riga durante il caricamento dei dati in pg. Che va bene se hai solo un paio di file da 100k o giù di lì, ma è davvero molto lento.

Di solito finisco per scrivere un piccolo script che scarica i dati da SQLServer in formato CSV, quindi utilizzare COPY WITH CSV sul lato PostgreSQL.

Entrambi si occupano solo dei dati. Prendersi cura dello schema è un po 'più difficile, dal momento che i tipi di dati non vengono necessariamente mappati direttamente. Ma può essere facilmente copiato insieme con un carico statico dello schema. Se lo schema è semplice (solo i tipi di dati varchar/int per esempio), tale parte può anche essere facilmente sottoposta a script dai dati in INFORMATION_SCHEMA.

Problemi correlati