Visualizzazione dei risultati da 1 a 8 su 8

Discussione: dump del database

  1. #1

    dump del database

    Ciao!
    Ho visto che sulla pagina di Phpmyadmin c'è la possibilità di fare un dump del database da scaricare come file sql; secondo voi questa funzione è richiamabile attraverso una query? Vorrei far scaricare il database attraverso un click di un link...

  2. #2
    Con un file SQL non so di preciso come si faccia, ma se hai un CSV ti basta usare la seguente query:

    Codice PHP:

    # Importi il CSV (con il metodo che preferisci) 
    $file_di_dump "nomefile.csv";

    # Eseguo la query per l'importazione
    mysql_query("LOAD DATA LOCAL INFILE '" $file_di_dump "' INTO TABLE mia_tabella
      FIELDS TERMINATED BY "
    ," LINES TERMINATED BY "\\r\\n";'); 
    Naturalmente, dovrai avere cura di modificare nella query i caratteri con i quali hai compilato il file CSV.

    Spero di esserti stato utile.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Ok! Ma questa funzione non serve per IMPORTARE un pezzo di database dentro un DB già esistente? Io volevo fare l'inverso, ovvero creare un file (va benissimo CSV ) dal mio DB, in modo che possa farlo archiviare eccetera.
    Sento che siamo vicini, comunque

  4. #4
    Scusa la fagianata.

    Avevo capito che il dump lo facevi con MySqlAdmin e che volevi importare il tutto con un tuo script.

    Creare al volo il tuo CSV (che in buona sostanza altro non è che un banalissimo foglio di testo) credo non sia molto difficile.

    Provo a buttare giù un po' di codice diciamo "live", però prendilo col beneficio dell'inventario perché non l'ho testato.

    Codice PHP:
    <?php
    // se vuoi che il server ti mandi in output il file csv d scaricare
    // nel tuo PC con il classico dialog "salva-apri"
    // devi mandare gli header che si occupano di questo

    header("content-Disposition: attachment; filename=\"dump_tabella.csv\" ");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Pragma: public");

    // ok dovresti essere pronto per fare
    // la tua bella query alla tabella da back-uppare
    // [ometto il codice]

    // fatta la query, fetchi il risultato
    // in una variabile che sarà poi il testo del tuo CSV
    // la cicli in uno while che ometto

    while (/* omissis */) {

    $csv .= $fetch['col1'];
    $csv .= "\t"// o qualsiasi altro carattere -> ricordatene per la query dell'import
    $csv .= $fetch['col2'];
    $csv .= "\t";
    /* tanti quante sono le colonne della tabella */
    $csv .= "\r\n" // o qualsiasi altro carattere di tabulazione -> anche qui, occhio alla query di import
    }

    // fatto tutto il ciclo, invio l'output
    echo $csv;


    ?>
    Ammetto di avere scritto il codice direttamente qui, per cui ho il 97% di possibilità di avere fatto errori (ad essere ottimisti, poi ).
    Testalo e magari facci sapere se funge o (se no) dove sono gli errori.
    Come ti ho anche scritto nei commenti, in base ai caratteri di tabulazione e fine riga che hai messo nello script, devi poi modificare quelli inseriti nella query di import che ti ho scritto nel precedente post.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Ciao Alcio, nessun problema ho capito la tua idea! Insomma il CSV te lo crei da zero.. non ci avevo pensato. Però insisto ancora un secondo: se hai tabelle collegate tra di loro? Come gli dici di esportare anche le chiavi etc?

  6. #6
    Avevo letto un articolo a riguardo dell'esportazione totale del DB (strutture tabelle e tutto insomma).
    Ora non ricordo come dove e quando però!

    Do un'occhiata in giro e ti faccio sapere.
    Credo che però esistano degli strumenti fatti all'uopo.
    Mi informo e torno.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    vedi che c'è una classe fatta da daniele_dll che fa questo, io ne ho letto soltanto ma non l'ho provata. cerca sul forum che la trovi di sicuro o se trovi l'utente daniele_dll forse ha qualche link in firma.
    io ne ho un'altra ma non ricordo dove l'ho presa, magari se trovo il link te lo mando e fa più o meno quello che ti serve, solo che esporta in linguaggio sql, con poche modifiche potresti esportare in csv, struttura compresa.

  8. #8
    Rieccomi.

    Allora, spulciando di qua e di là, ho trovato qualcosa che forse può tornarti utile.

    Ci sono due differenti metodi che si possono seguire.

    • Metodo 1 (funziona solo con tabella MyIsam):
    codice:
     BACKUP TABLE nome_tabella TO 'directory/con/permessi/di/scrittura' ;
    Questo comando SQL genera la copia fisica dei file .frm (struttura della tabella) e .MYD (dati della tabella) cioé i file dove MySQL fisicamente scrive i propri DB.
    Non viene effettuata la copia del file .MYI (indici della tabella).
    Questi file sono di solito creati dal sevrer MySQL nella directory di installazione del DB stesso (esempio in windows: c:\programmy\mysql\data).

    Per il ripristino:
    codice:
     RESTORE TABLE nome_tabella FROM 'directory/con/permessi/di/scrittura' ;
    Viene da sé che prima di effettuare il RESTORE devi fare il DROP della tabella da ripristinare.

    • Metodo 2:
    codice:
     SELECT * FROM nome_tabella INTO OUTFILE  'directory/con/permessi/di/scrittura/nome_tabella.dump' ;
    Con questa istruzione, scriverai tutti i record della tabella in un file di testo e puoi specificare i caratteri con i quali puoi separare i campi, i record, nei quali contenere i dati estrapolati dal DB ecc.

    codice:
     LOAD DATA INFILE 'directory/con/permessi/di/scrittura/nome_tabella.dump' INTO TABLE nome_tabella ;
    Con questo comando invece importi il file .dump e lo reinserisci nella tabella backuppata.
    Naturalmente, prima del ripristino devi cancellare i record della tabella.

    Suppongo, però, che questo secondo metodo non dovrebbe fare il backup della struttura..... non so.
    Dovresti fare delle prove.

    Spero di essere stato utile.
    Ciao
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.