2015-01-03 14 views
5

Ich plane, meine Anwendung Datenbank von Mysql zu Mongo mit niedrigen Schemaänderungen zu migrieren. In meinem neuen Schema habe ich zwei Mysql-Tabellen in eine Mongo-Sammlung zusammengeführt. Ich möchte Mongify (https://github.com/anlek/mongify) Edelstein verwenden, um meine vorhandenen Mysql-Daten in Mongo mit neueren Schema zu füllen.Wie zwei Tabellen mit Mongify zu einer zusammengeführt werden

Wie geht das? Gibt es einen Weg in mongify, um zwei Mysql-Tabellen zu einem zusammenzufassen?

Mysql Tabellen

user 
    id 
    name 
    nickname 
    type 

user_role 
    id 
    role 
    alias 
    user_id 

fusionierte ich die beiden oben genannten Tabellen in einzelne Sammlung in Mongo

user 
    id 
    name 
    type 
    role 
    alias 

Antwort

2

Versuchen LEFT JOIN: (Tabellen zusammengefasst werden)

SELECT column_name(s) 
FROM table1 
LEFT JOIN table2 
ON table1.column_name=table2.column_name; 

exportieren Daten in sQL-Format und laden sie sie

MongoDB
SELECT country INTO customerCountry 
FROM customers 
WHERE customerNumber = p_customerNumber; 

    CASE customerCountry -- Here you have to see if that alias data is set 
WHEN 'USA' THEN 
    SET p_shiping = '2-day Shipping'; -- here you have to write Update Query 
ELSE 
    SET p_shiping = '5-day Shipping'; 
END CASE; 

ich denke, es könnte Ihnen helfen

+0

Vielen Dank für Ihre wertvolle Antwort !!! Die Benutzertabelle hat einen "Spitznamen" und die zweite Tabelle hat "Alias" -Felder. Wenn ich das Feld "Nickname" in "Alias" umbenennen muss, muss ich die user_info.alias Werte in Benutzertabelle setzen. Wie mache ich das? Bitte geben Sie Ihre Eingaben ... – SST

+0

Möchten Sie alle Daten von user.nickname aus user_role.alias Spalten –

+0

Ja ersetzen. Das sollte okay sein!!! In diesem Fall – SST

2

die Daten holen von MySQL JOIN mit und diese Daten in MongoDB laden:

starten:

SELECT U.id, U.name, U.type, UR.role 
FROM USER U 
INNER JOIN user_role UR ON U.id = UR.user_id; 
0

Ein Alternative, wenn es schwierig ist, zwei Tabellen ad-hoc zu verbinden, dann führen Sie eine mongo shell script pos t-hoc; Sie sind sehr einfach zu programmieren (paar Zeilen von js) und einfach auszuführen. Außerdem kann man jede benötigte Konvertierung anwenden, wie zum Beispiel in json/bson-Arrays, die in mongo erlaubt sind, aber nicht in mysql.

Annahme einer Benutzer- und user_role Sammlung (oder Tabelle) in Mongo.

db.user_role.find({}).forEach(function(doc) { 
    var roles = doc.roles; 
    // convert mysql format here if needed. 
    //var roles_array = JSON.parse(roles) // or whatever? 

    //var alias = doc.alias; 
    // if alias is null empty or ?? 

    // dont upsert to avoid orphaned user_role records 
    db.user.update({"_id": doc.user_id}, {"roles": roles, "alias", doc.alias }, {upsert: false, multi: false}); 

} 

ausführen dann die Schale Mongo mit

Mongo localhost: 27017/test myjsfile.js