Load CSV / MultyQuery su database diversi

di il
6 risposte

Load CSV / MultyQuery su database diversi

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 è 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 è presente nel csv del db A lo scrivo nel db C se lo stesso è 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

6 Risposte

  • Re: Load CSV / MultyQuery su database diversi

    Se i due database risiedono nello stesso server ed hanno lo stesso accesso puoi usare con la inner join

    Esempio:
    
    SELECT * FROM databaseA.dbo.tableA a inner join database B.dbo.tableB b ON a.email=b.email
    
  • Re: Load CSV / MultyQuery su database diversi

    Mi intrometto nella conversazione

    il problema non è prendere solo gli utenti che abbiamo la stessa mail, ma gli utenti non uguali tra loro. Quindi lui deve:
    • recuperare gli utenti dalla tabella A (Tutti)
      recuperare gli utenti dalla tabella B (Tutti)
      eseguire l'unione (vedere la teoria degli insiemi)(tabella a U tabella B)
      Scrivere il risultato nella tabella C
  • Re: Load CSV / MultyQuery su database diversi

    Se intende prelevare i dati da entrambe le tabelle deve usare una left join ed una union (nel caso di mysql che non prevede la full outer join)
    Supponioamo di avere:
    
    databaseA.tableA
    pippo
    pluto
    
    databaseB.tableB
    pippo
    paperino
    zzz
    
    SELECT * FROM databaseA.tableA a LEFT JOIN databaseB.tableB b ON a.email=b.email UNION SELECT * from databaseB.tableB b LEFT JOIN databaseA.tableA a on b.email=a.email;
    
    +----------+-------+
    | email    | email |
    +----------+-------+
    | pippo    | pippo |
    | pluto    | NULL  |
    | paperino | NULL  |
    | zzz      | NULL  |
    +----------+-------+
    
    va bene oppure no?
  • Re: Load CSV / MultyQuery su database diversi

    Credo sia il suo caso. Lui vuole, appunto, estrarre tutti i valori da entrambi i db ma in modo univoco Quindi, matematicamente parlando, una unione di due insiemi. Ultimamente sono un pò arruginito in fatto di query, ma sembra corretta. La tua proposta precedente non lo era perchè tra le due tabelle prendevi solo e soltanto gli elementi in comune, tutto qua
  • Re: Load CSV / MultyQuery su database diversi

    Marco hai fatto bene a correggermi,
    ho il brutto vizio di non leggere con attenzione le reali esigenze di chi scrive e a volte mi rendo conto di dare risposte incoerenti solo ad una successiva risposta di OP.

    ~Max
  • Re: Load CSV / MultyQuery su database diversi

    Tranquillo, tutti possiamo sbagliare, ci mancherebbe altro

    Il mio intervento non era una ramanzina, ma solo un avviso ho avuto spesso anch'io tale problema, e ogni tanto mi succede ancora

    Ora basta ot
Devi accedere o registrarti per scrivere nel forum
6 risposte