2009-09-07 18 views
6

Eine der Anwendungen, die ich entwickle, wird lokal auf der Website des Kunden installiert. Dies bedeutet, dass wir MySQL, MSSQL und Oracle unterstützen müssen, da nicht alle Kunden dieselbe Datenbank-Engine verwenden.Konvertieren MS SQL-Skript in Mysql und Oracle

Ich schreibe einen Patch für die Anwendung, von denen ein Teil führt eine 5000 Zeile SQL-Skript ausführen, um Änderungen an der Datenbank vorzunehmen. Das Skript wurde mit MSSQL-Syntax geschrieben, aber ich habe mich gefragt, ob es eine Anwendung zur automatischen Konvertierung der MSSQL-Syntax in die von Oracle und/oder MySQL gibt, damit ich sie nicht manuell machen muss.

+2

Die Frage ist: Würdest du deinen 'Produktions'-Datenbanken mit einem automatisch generierten Skript vertrauen ... –

+0

Wenn es die Testverfahren von QA natürlich bestanden hat. – user169743

+0

Sie haben QA? Glücklich. :) – JRadness

Antwort

0

Ich schreibe einen Patch für die Anwendung, von denen ein Teil führt eine 5000 Zeile SQL-Skript, um Änderungen an der Datenbank vorzunehmen. Das Skript wird mit MSSQL Syntax geschrieben, aber ich frage mich, ob es eine Anwendung zur automatischen Konvertierung MSSQL Syntax zu der von Oracle und/oder MySQL, um mich zu speichern manuell tun müssen.

Es ist kaum möglich.

Die gemeinsame Teilmenge von SQL all diese Systeme unterstützen ist ziemlich wenig.

Da Sie 5000 Zeilen Code in Ihrem Skript haben, ist es wahrscheinlich aus dieser Teilmenge.

Der schlimmste Teil ist, dass es in der Regel nicht nur die Syntaxunterschiede, sondern hauptsächlich konzeptionelle Unterschiede gibt.

  • Oracle zum Beispiel unterstützt MERGE Aussage, die, Löschen und Aktualisieren in einer einzigen Abfrage einfügen kann.

    Weder SQL Server 2005 noch MySQL unterstützen eins.

  • MySQL unterstützt Löschen aus mehreren Tabellen auf einmal: nicht verfügbar in Oracle oder SQL Server.

  • SQL Server, im Gegensatz zu Oracle und MySQL kann CTE ‚s aktualisieren, die analytischen Funktionen nutzen.

1

Und noch mehr ist in Bezug auf, dass die Datenbanken unterschiedliche Verriegelungsmechanismen unterstützen, so können Sie in der Lage sein, einige Tabellen und Indizes in dorthin zu gelangen, aber Sie könnten einige Probleme vorstellen, die sehr schwer zu debuggen/replizieren, wenn Sie setzen Sie es in die Wildnis aus.

Sie benötigen 3 Experten, um diese Menge zu sortieren - je einen von SQL Server, MySQL und Oracle. Das oder Ihre Datenbank muss mit maximal einem Benutzer ausgeführt werden, mit schlechter Leistung und sehr durchschnittlichen Datenbankmechanismen. Leider

...

+0

komisch, weil es nur von einem Benutzer (der Anwendung) verwendet wird und alle ausgeführten Befehle sind sehr einfach, es fungiert lediglich als Persistenzschicht. – user169743

1

Ich weiß nicht, von einem Datenbank-Engine Programmierung Syntax-Konverter. Da Sie jedoch an einer Multi-Datenbank-Plattform arbeiten, würde ich die Verwendung der Enterprise Library und ihres Anwendungsblocks in Erwägung ziehen. Das wird dir Kopfschmerzen ersparen, du musst mir vertrauen!

Ich bin mir bewusst, dass Sie nicht genug Zeit für Ihre kommenden Releases haben, so dass Sie die Skripts manuell einrichten müssen, aber tun Sie sich selbst einen Gefallen und erwägen, Microsoft Enterprise Library zu verwenden.

Ein anderer möglicher Weg ist, diese Motoren so nah wie möglich in einander zu bringen, damit Sie mit den drei von ihnen bequemer arbeiten können. Daher müssen Sie analysieren und entscheiden, welche Funktion wo und warum erstellt werden soll. Das ist harte Arbeit, ernsthaft.

In meiner eigenen Erfahrung entwickle ich nicht mehr ohne Enterprise Library, zumindest den Data Application Block (DAAB).

Hier der Link:

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

Lassen Sie mich wissen, ob dies Ihnen geholfen. Wenn Sie weitere Unterstützung für die Einrichtung Ihrer Datenzugriffsebene mit Enterprise Library benötigen, lassen Sie es mich wissen.

EDIT 2015.01.16

Ein anderer in diesen Tagen beste Ansatz ist die Verwendung von entweder NHibernate, Entity Framework oder anderen ORM-Tools wie diese.

Mit ihnen, keine SQL-Skripts mehr benötigt, wird alles für Sie abhängig von Ihrer RDBMS-Konfiguration generiert.

2

Für die Konvertierung nach Oracle können Sie die Migration Workbench ausprobieren.

+0

Ihr Link ist tot. Bitte aktualisiere es. –

+0

Oder Sie wissen, Sie könnten es aktualisieren ... Sie haben genug Ruf. –

+0

Weil ich nach dem gleichen suche :) –

4

Dies ist ein altes Thema, aber ich würde empfehlen, das folgende Werkzeug zu verwenden: http://www.sqlines.com/online. Ich hatte eine gute Erfahrung damit. Keine Probleme gefunden seit 3 ​​Monaten (wenn ich angefangen habe es zu benutzen).

Verwandte Themen