Come si può esportare un database (struttura + contenuto tabelle) con MySQL?
Come si può esportare un database (struttura + contenuto tabelle) con MySQL?
up
se usi phpmyadmin c'è un pulsante apposito con scritto 'esporta' che ti permette di fare quello che hai chiesto.
ho anch'io la stessa esigenza e, sul server dove devo esportare, NON HO phpmyadmin...
chi mi può aiutare?
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?Originariamente inviato da starcraftworld
Come si può esportare un database (struttura + contenuto tabelle) con MySQL?
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.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
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.
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??
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.
![]()