2015-01-03 15 views
5

Sto pianificando di migrare il mio database dell'applicazione da Mysql a Mongo con modifiche dello schema basse. Nel mio nuovo schema ho unito due tabelle Mysql in una raccolta Mongo. Voglio usare mongify (https://github.com/anlek/mongify) gem per popolare i miei dati Mysql esistenti in Mongo con uno schema più recente.Come unire due tabelle in uno usando mongify

Come fare questo? C'è un modo in mongify per unire due tavoli Mysql in uno?

tavoli

Mysql

user 
    id 
    name 
    nickname 
    type 

user_role 
    id 
    role 
    alias 
    user_id 

ho fuse queste due tabelle in un'unica collezione in Mongo

user 
    id 
    name 
    type 
    role 
    alias 

risposta

2

Prova LEFT JOIN: (tabelle verranno unite)

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

Export che dati in formato sql e caricarlo su 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; 

Penso che potrebbe aiutare a

+0

Grazie per la risposta di valore !!! La tabella utente ha "nickname" e la seconda tabella ha campi "alias". Se ho bisogno di rinominare il campo "nickname" in "alias" e ho bisogno di mettere i valori user_info.alias nella tabella utente. Come faccio a fare questo? Fornisci i tuoi input ... – SST

+0

Vuoi sostituire tutti i dati da user.nickname da user_role.alias colonne –

+0

Sì. Questo dovrebbe andare bene !!! – SST

2

recuperare i dati utilizzando JOIN da MySQL e caricare i dati in MongoDB:

Prova questo:

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

An alternativa se è difficile unire due tabelle ad-hoc quindi eseguire un pos mongo shell script t-hoc; sono molto facili da programmare (paio di linee di js) e semplici da eseguire. più uno può applicare qualsiasi conversione necessaria, ad esempio in matrici json/bson consentite in mongo ma non nel mysql.

assumendo una raccolta utente (o tabella) utente in user.

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}); 

} 

quindi eseguire utilizzando la shell mongo

mongo localhost: 27017 myjsfile.js/prova