Load CSV / MultyQuery su database diversi

  • Creatore Discussione Creatore Discussione ciopin
  • Data di inizio Data di inizio

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Salve Ragazzi,

avrei bisogno del vostro aiuto per capire come risolvere questo problema:

Io ho un database A, un database B ed un database C. Io devo realizzare uno script che ogni giorno faccia una select degli utenti iscritti nel database A, degli utenti iscritti nel database B e li scriva tutti nel database C. Io non so se è possibile fare 2 query distinte e separate nello stesso script su 2 DB database diversi e fare la insert della select ottentua in un 3° database (il db C). Se non fosse possbile fare le 2 select nello stesso script avevo pensato di fare una prima select nel db A e scrivere il risulato in un csv, una seconda select nel db B e scrivere il risultato in un csv e alla fine fare un load dei 2 csv nel db C facendo in modo però da evitare di scrivere gli stessi utenti 2 volte. Mi spiego meglio se tizio@yahoo.com è presente sia nel db A che nel db B non lo scriverò 2 volte ma lo scriverò uan volta sola e la seconda volta farò solo un update dei dati aggiuntivi non inseriti prima...spero di essere stato chiaro ( esempio se tizio@yahoo.com è presente nel csv del db A lo scrivo nel db C se lo stesso tizio@yahoo.com è anche presente nel csv del db B non vado e reinserirlo ma vado solo a fare un update dei campi).
Tutto questo ovviamente in fase teorica...ma come faccio a svilupparlo? Non ho idea da dove inziare e come simpostare il tutto...qualcuno può aiutarmi?

Grazie Mille
 
Ciao,
Dovresti riuscire a cavartela con uno script del genere:

PHP:
// con union unisci i record di due tabelle se non ricordo male devono essere identiche ma non lo giurerei
$query = "SELECT * FROM databaseA.utenti
            UNION
          SELECT * FROM databaseB.utenti";
$res = mysql_query($query);

// cicli i record con un while
while ($row = mysql_fetch_assoc($res)) {
    // on duplicate key ti permette di eseguire un update se il record già esiste Dovrai avere un campo contrassegnato come unico nella tabella3
    $aggiorna = "INSERT INTO databaseC.utenti (mail,username) VALUES ('" . $row['mail'] . "','" . $row['username'] . "') 
                     ON DUPLICATE KEY 
                     UPDATE mail = '" . $row['mail'] . "'";
// esegui la query
    mysql_query($aggiorna);   
// qui se vuoi puoi creare un file di log per registrare le insert e gli update
}

Ho letto di ON DUPLICATE KEY su questo forum qualche giorno fa ma non l'ho mai usato

tentar non nuoce quasi mai

PS: dimenticavo della data; se lo fai ogni giorno puoi aggiungere una where dataRegistrazione = oggi nelle due select iniziali

PPS: ma non ti conviene estrarre semplicemnte i dati dalle prime due tabelle?
 
Ultima modifica:
ciao
mi posso permettere una piccola osservazione su un modo di dire che trovo spesso qui nel forum?
Io ho un database A, un database B ed un database C.
detto così sembra che uno debba trasferire da un db ad un altro quindi da selezionare due db diversi, altrimenti si parla di tabelle di un db allrora quanto ha detto ciric può andare bene
 

Discussioni simili