Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Esportare database

  1. #1

    Esportare database

    Come si può esportare un database (struttura + contenuto tabelle) con MySQL?

  2. #2
    up

  3. #3
    Utente di HTML.it L'avatar di moonba
    Registrato dal
    Jun 2007
    Messaggi
    649
    se usi phpmyadmin c'è un pulsante apposito con scritto 'esporta' che ti permette di fare quello che hai chiesto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    ho anch'io la stessa esigenza e, sul server dove devo esportare, NON HO phpmyadmin...
    chi mi può aiutare?

  5. #5

    Re: Esportare database

    Originariamente inviato da starcraftworld
    Come si può esportare un database (struttura + contenuto tabelle) con MySQL?
    con "con MYSQL" intendi che hai accesso alla shell di sistema e puoi eseguire i comandi di MYSQL oppure devi per forza interfacciarti tramite uno script in una pagina php?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    ho accesso al db con localadmin
    lì c'è una finestrella che mi dice... Scrivi una query SQL:
    quindi con la query giusta riuscirei ad esportare struttura e contenuti del db

  7. #7
    Originariamente inviato da theseo
    ho accesso al db con localadmin
    lì c'è una finestrella che mi dice... Scrivi una query SQL:
    quindi con la query giusta riuscirei ad esportare struttura e contenuti del db
    Se hai la possibilità di fare girare solo le query SQL allora non hai speranze.

    In termine tecnici esportare database SQL si chiama "dump", fai delle ricerche.
    Questa operazione è possibile solo se:

    1) hai accesso a PHP per far girare query SQL che sia in grado di catturare la risposta e spedirtela via email o salvarla su file di testo.

    2) hai accesso alla shell e sul server è installato mysqldump, allora puoi fare il dump usando la riga di comando specificando diverse opzioni di esportazione.

    In ogni caso ti consiglio vivamente di fare una ricerca su Google con il termine "mysql dump" e vedere se qualche santo ha creato uno script in PHP che replica il comportamento di mysqldump (cosa che poi PHPmyADMIN stesso fa).

    Un consiglio, la prossima volta vai solo da provider che mettono a disposizione PHPmyADMIN, altrimenti impazzisci dietro a questi problemi. Altrimenti prova a fare una installazione di PHPmyADMIN direttamente tu.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    grazie della pazienza...
    ho trovato questo--->

    <?
    # Configuro i parametri di accesso al mio DB
    $db_host = "";
    $db_name = "";
    $db_user = "";
    $db_pass = "";

    # Mi connetto al server MySQL e seleziono il DB
    mysql_connect($db_host,$db_user,$db_pass);
    @mysql_select_db($db_name) or die("Errore!");

    # Creo la funzione datadump
    function datadump ($table) {

    # Creo la variabile $result
    $result .= "# Dump of $table \n";
    $result .= "# Dump DATE : " . date("d-M-Y") ."\n\n";

    # Conto i campi presenti nella tabella
    $query = mysql_query("select * from $table");
    $num_fields = @mysql_num_fields($query);

    # Conto il numero di righe presenti nella tabella
    $numrow = mysql_num_rows($query);

    # Passo con un ciclo for tutte le righe della tabella
    for ($i =0; $i<$numrow; $i++)
    {
    $row = mysql_fetch_row($query);

    # Ricreo la tipica sintassi di un comune Dump
    $result .= "INSERT INTO ".$table." VALUES(";

    # Con un secondo ciclo for stampo i valori di tutti i campi
    # trovati in ogni riga
    for($j=0; $j<$num_fields; $j++) {
    $row[$j] = addslashes($row[$j]);
    $row[$j] = ereg_replace("\n","\\n",$row[$j]);
    if (isset($row[$j])) $result .= "\"$row[$j]\"" ; else $result .= "\"\"";
    if ($j<($num_fields-1)) $result .= ",";
    }

    # Chiudo l'istruzione INSERT
    $result .= ");\n";
    }

    return $result . "\n\n\n";
    }

    # Poniamo di voler fare il Dump di 2 tabelle chiamate rispettivamente
    # "amici" e "clienti"... Ovviamente potete modificare
    # a piacimento!
    $table1 = datadump("amici");
    $table2 = datadump("clienti");

    # Diamo un nome al file di Dump che verrà creato
    $file_name = "MySQL_Backup.txt";

    # Definiamo le intestazioni
    Header("Content-type: application/octet-stream");
    Header("Content-Disposition: attachment; filename = $file_name");

    # Stampiamo il contenuto
    echo $table1 . $table2;

    # Chiudiamo
    exit;
    ?>

    che ne dici??

  9. #9
    Visto così, potrebbe funzionare con una tabella molto molto semplice.

    Ma ci sono delle eccezioni, le eccezioni riguardano il datatype dei campi.

    Ti faccio un esempio:

    hai un campo DATETIME che può assumere valori NULL

    Quando effettui la select otterrai in PHP un campo vuoto ""

    Se tu fai una insert con il campo vuoto "" anzichè specificare la costante NULL otterrai di inserire la data "0000-00-00 00:00:00" (in quanto avrai inserito una stringa non riconosciuta).

    Lo stesso vale per i testi e i binari. NULL != "", mentre nel codice che hai postato vengono trascurate completamente le eccezioni.


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.