2009-09-07 14 views
6

Una delle applicazioni che sviluppo viene installata localmente sul sito del cliente. Ciò significa che dobbiamo supportare MySQL, MSSQL e Oracle poiché non tutti i clienti utilizzano lo stesso motore di database.Converti script MS SQL in Mysql e Oracle

Sto scrivendo una patch per l'applicazione, una parte della quale prevede l'esecuzione di uno script sql di 5000 righe per apportare modifiche al database. Lo script è stato scritto usando la sintassi MSSQL, tuttavia mi chiedevo se esiste un'applicazione per convertire automaticamente la sintassi MSSQL con quella di Oracle e/o MySQL per evitare di doverlo fare manualmente.

+2

La domanda è: ci si fiderà dei database di "produzione" con uno script generato automaticamente ... –

+0

Se ha superato le procedure di test di QA, ovviamente. – user169743

+0

Hai QA? Fortunato. :) – JRadness

risposta

0

Sto scrivendo una patch per l'applicazione, di cui una parte comporta l'esecuzione di uno script SQL 5000 linea di apportare modifiche al database. Lo script è scritto utilizzando la sintassi MSSQL, ma mi chiedevo se esiste un programma per convertire automaticamente MSSQL la sintassi a quella di Oracle e/o MySQL per salvare me dover fare manualmente.

È quasi impossibile.

Il sottoinsieme comune di SQL supporta tutti questi sistemi è piuttosto piccolo.

Poiché si dispone di righe di codice 5000 nello script, molto probabilmente è fuori da questo sottoinsieme.

La parte peggiore è che in genere non sono solo le differenze di sintassi, ma piuttosto quelle principali concettuali.

  • Oracle, per esempio, supporta MERGE dichiarazione che consente l'inserimento, l'eliminazione e l'aggiornamento in una singola query.

    SQL Server 2005MySQL supporto uno.

  • MySQL supporta l'eliminazione da più tabelle contemporaneamente: non disponibile in Oracle o SQL Server.

  • SQL Server, a differenza Oracle e MySQL, può aggiornare CTE 's che utilizzano le funzioni analitiche.

1

E ancora più preoccupante è che i database supportano diversi meccanismi di bloccaggio, in modo da essere in grado di ottenere alcune tabelle e indici in là, ma si potrebbe introdurre alcune questioni che sono molto difficili da eseguire il debug/replicare quando si esponilo in natura.

gli strumenti necessari alla 3 esperti per ordinare che molto fuori - uno ciascuno di SQL Server, MySQL e Oracle. Quello o il tuo database deve essere eseguito con un massimo di un utente, con prestazioni scadenti e meccanismi di database molto medi.

Siamo spiacenti ...

+0

divertente perché è usato solo da un utente (l'applicazione) e qualsiasi comando eseguito è molto semplice, agisce semplicemente come un livello di persistenza. – user169743

1

non so di un convertitore di sintassi di programmazione motore di database. Tuttavia, dal momento che stai lavorando su una piattaforma multi-database, prenderei in considerazione l'uso di Enterprise Library e del suo blocco di applicazioni. Questo ti farà risparmiare mal di testa, devi fidarti di me!

Sono consapevole del fatto che voi non abbiate abbastanza tempo per le vostre prossime versioni, quindi dovrete configurare gli script manualmente, ma fatevi un favore e considerate l'utilizzo di Microsoft Enterprise Library.

Un altro modo possibile è quello di avvicinare questi motori il più possibile l'uno all'altro in modo da poter lavorare più convenientemente con i tre di essi. Quindi, ti richiede di analizzare e decidere quale funzione dovrebbe essere creata dove e perché? Questo è un duro lavoro, sul serio.

Nella mia esperienza personale, non sviluppo più senza Enterprise Library, almeno il blocco Data Application (DAAB).

Qui il link:

  1. http://www.microsoft.com/downloads/details.aspx?FamilyId=1643758B-2986-47F7-B529-3E41584B6CE5&displaylang=en
  2. http://www.codeplex.com/entlib

fatemi sapere se questo ti ha aiutato. Se hai bisogno di ulteriore assistenza per configurare il tuo livello di accesso ai dati con Enterprise Library, fammi sapere.

EDIT 2015.01.16

Un altro approccio migliore in questi giorni è l'uso sia NHibernate, Entity Framework o altri strumenti di ORM come questi.

Con loro, non è più necessario alcuno script SQL, tutto viene generato per te in base alla configurazione RDBMS.

2

Per la conversione in Oracle è possibile provare il Migration Workbench.

+0

Il tuo link è morto. Si prega di aggiornarlo. –

+0

Oppure, sai, potresti aggiornarlo ... hai abbastanza reputazione. –

+0

Perché sto cercando lo stesso :) –

4

Questo è un argomento vecchio, ma vorrei raccomandare l'utilizzo del seguente strumento: http://www.sqlines.com/online. Ho avuto una buona esperienza nell'usarlo. Nessun problema riscontrato da 3 mesi fa (quando ho iniziato ad usarlo).