Script zum kopieren von Daten aus einer Informix-Datenbank in eine andere
Ich habe ein Bedürfnis zum kopieren von Daten aus einer Informix-Datenbank in eine andere. Ich will nicht mit LADEN zu tun. Gibt es irgendein Skript, dass kann mir dabei helfen? Gibt es irgendeine andere Möglichkeit, dies zu tun?
- Da das LADEN (ENTLADEN) sind die offensichtliche Antwort, aber Sie ablehnen, sollten Sie erklären, warum die LAST ist nicht geeignet für Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ohne ein bisschen mehr Informationen über die Arten von Informix-Datenbanken, die Sie haben, ist es schwer genau zu sagen, was die beste option für Sie ist.
Wenn es eine kleine Anzahl von Tabellen und große Datenmengen, haben Sie einen Blick auf onunload, onload und/oder der High Performance Loader. (Ich gehe davon aus wir reden hier nicht von Standard Motor hier).
Wenn auf der anderen Seite haben Sie viele Tabellen-und HPL-zu fummelig ist, haben Sie einen Blick auf myexport/myimport (verfügbar auf der iiug.org Website). Diese sind non-locking-äquivalente der standard-dbexport/dbimport-Dienstprogramme.
Die einfachste Lösung ist ein backup der Datenbank-Instanz, und stellen Sie Sie auf einer separaten Instanz. Wenn dies nicht möglich ist, dann gibt es andere Möglichkeiten.
Wenn die Struktur der Datenbank identisch ist, dann können Sie dbexport/dbimport, jedoch wird dies das entladen der Daten in flache Dateien, entweder im Dateisystem oder auf Band und dann importieren aus dem flachen Dateien.
Ich in der Regel feststellen, dass, wenn die DB-Struktur ist die gleiche, dann laden/entladen ist die einfachste Lösung.
Wenn Sie nicht verwenden möchten, laden/entladen, dbimport/dbexport dann können Sie direkte SQL-EINSÄTZE wie folgt (Ungetestet, müssen Sie prüfen der syntax)
Dies würde natürlich bedeuten, konsistente Struktur der Tabelle, könnten Sie eine Spalte der Liste, wenn die Struktur anders ist.
Einem Gebiet, das zu Fragen, ist die referenzielle Integrität. Wenn Sie fremde Schlüssel, dann wird dies dazu führen Sie ein problem, wie Sie benötigen, um sicherzustellen, die Beilagen sind in der richtigen Reihenfolge. Sie haben möglicherweise auch Probleme mit der SERIAL-Spalten und FÜGT. Last nicht leiden unter diesem problem, als Sie laden können in eine Tabelle mit einem seriellen Wert und behalten Sie die ursprünglichen Werte.
Habe ich oft festgestellt, dass die beste Lösung ist wie folgt
segment ist, alle zur Erstellung der Tabelle
Aussagen, die im zweiten Teil ist alles
der CREATE INDEX -, Referentielle
Integrität etc Aussagen.
die schema.
database2.
Dies ist sehr ähnlich zu dem Prozess, dbimport durch geht, aber früher habe ich nicht in der Lage gewesen, dbimport, wie meine Datenbank enthält Synonyme für eine andere Datenbank und dbimport hat/funktioniert nicht mit diese.
UNLOAD-und LOAD sind der einfachste Weg, es zu tun. Durch hindere Sie, Sie schließt die Benutzung von DB-Last und DB-Zugriff und DB-Export und DB-Import zu. Dies sind die einfachsten Möglichkeiten, es zu tun.
Wie bereits erwähnt, könntest du überlegen, mit HPL.
Könnte man auch so einrichten, dass ein ER-system - es ist härter als ENTLADEN gefolgt von LADEN, aber nicht mit den verboten Operationen.
Wenn die beiden Maschinen sind im wesentlichen identisch, Sie könnte prüfen, onunload und onload; würde ich es nicht empfehlen.