Ich habe eine Datenbank in PostgreSQL 8.3.1, die ich auf MS SQL Server 2005 (oder vielleicht 2008) migrieren möchte, einschließlich des Tabellenschemas und der Daten. Die Datenbank ist ungefähr 50 GB groß und hat ungefähr 400.000.000 Zeilen. Ich denke, einfache INSERT-Anweisungen kommen nicht in Frage. Kann jemand das beste Tool für diese Migration empfehlen? Offensichtlich muss es zuverlässig sein, damit die Daten in der Zieldatenbank genau dieselben sind wie in der Quelldatenbank, und es muss in der Lage sein, dieses Datenvolumen innerhalb einer angemessenen Zeit zu kopieren.
8
Antworten:
Am Ende habe ich kein Tool von Drittanbietern für die Daten verwendet, da keines der Tools, die ich ausprobiert habe, für die großen Tabellen funktioniert hat. Sogar SSIS ist fehlgeschlagen. Ich habe jedoch ein kommerzielles Tool für das Schema verwendet. Mein Konvertierungsprozess war also wie folgt:
Der Transformationsschritt hat einige Unterschiede in den von pg_dump und bcp verwendeten Formaten berücksichtigt, wie z.
Ich fand auch heraus, dass einige einzigartige Einschränkungen, die in Postgres in Ordnung waren, in MSSQL verletzt wurden, sodass ich sie löschen musste. Dies lag daran, dass in MSSQL NULL = NULL ist (dh NULL wird als eindeutiger Wert behandelt), in Postgres jedoch nicht.
quelle
Wenn Sie die entsprechenden Postgres-Supporttreiber auf Ihrer SQL 2005-Box installiert haben (oder Postgres über ODBC verwenden oder die Daten von Postgres in eine Datei sichern und daraus importieren möchten), können Sie den Import- / Export-Assistenten in SQL Server in verwenden um die Daten zu kopieren. Dadurch werden Ihnen verschiedene Fragen gestellt und der Import als SSIS-Paketjob (SQL Server Integration Services) unter Verwendung geeigneter Stapeleinfügevorgänge ausgeführt.
Wenn dieser Assistent jedoch keine Option ist, sollten Sie berücksichtigen, dass trotz einer großen Anzahl von Zeilen die individuelle Größe der Zeilen im Durchschnitt <135 Byte beträgt und ausreichend Transaktionsprotokollspeicherplatz vorhanden ist, damit eine Transaktion mit 50 GB ausgeführt werden kann. ' einfache Einfügungsanweisungen kommen selbst nicht in Frage.
quelle
http://www.easyfrom.net/
Los geht's :) Leider ist es etwas teuer.
quelle
Fast 10 Jahre später, und dies ist immer noch kein einfaches Thema. Am Ende hatte ich eine Hybridlösung. Ich habe meinen eigenen Schema-Mapper gerollt, indem ich die Schema- und Tabellen- / Spaltenkommentare mit dem folgenden Befehl exportiert habe:
Ich habe dann ein PHP-Skript geschrieben, das das Schema in T-SQL übersetzt hat. Anschließend habe ich die folgende Software von Drittanbietern verwendet, um den eigentlichen Import von Zeilen durchzuführen (keine Zugehörigkeit):
http://www.convert-in.com/pgs2mss.htm
Es war etwas langsam, aber soweit so gut. Unsere Datenbank war kleiner als Ihre, nur 15 GB, aber dieses Tool schien gut damit umzugehen. Es war auch das billigste, das ich bei etwa 50 Dollar finden konnte. Bisher hat sich die Investition gelohnt.
quelle