2017-08-10 2 views
0

Ich verwende eine Ladedatei mit pgloader und es gibt eine besonders problematische Tabelle in meiner MySQL-Datenbank mit ungültigen Datumsangaben. Ich möchte diese Spalte während der Migration einfach überspringen. Wie kann ich das in einer Ladedatei machen? Etwas wie:Kann pgloader bestimmte Spalten in einer MySQL-Tabelle ausschließen?

LOAD DATABASE 
    FROM mysql://[email protected]/mydb 
    INTO postgresql:///mypgdb 
    INCLUDING ONLY TABLE NAMES MATCHING 
    'Table_with_Datetimes_Column' AS dt, 
    'My_Other_Table' 
    EXCLUDING dt.Malformed_Column 
; 

Antwort

0

Sie die problematische Tabelle vollständig ausschließen kann, und dann wandert über Daten aus einer Ansicht, die materialisieren VIEW-Klausel des Ladebefehls verwendet wird. Also zuerst einen Blick auf-Spitze Ihrer Tabelle definieren, wobei Sie die problematische Spalte auslassen, dann

exclude table name matching 'Table_with_Datetimes_Column' 
materialize views 'v_Table_without_Datetimes_Column' 

Siehe Beispiele im Test-Verzeichnis im Repository für pgloader, insbesondere die sakila.load ein: https://github.com/dimitri/pgloader/blob/master/test/sakila.load

+0

Das ist sehr ähnlich zu dem, was ich gerade mache. Anstatt eine materialisierte Ansicht zu erstellen, lege ich einfach die Spalten ab und lade die Tabelle normal. Ihr Ansatz ist besser, da die ursprüngliche Datenbank beibehalten wird und alles in die Ladedatei eingefügt werden kann. Ich werde es heute versuchen. – medley56

Verwandte Themen