MySQL istruzione che restituisce un'istruzione SQL?
Domanda
Ho bisogno di fare un dump di una tabella su un server remoto, ma non posso accedere al server direttamente.L'unico accesso che ho è attraverso script PHP.
C'è qualche modo in cui MySQL restituisce un
INSERT INTO `table_name` (`field1`, `field2`) VALUES ('a', 'b'), ('c', 'd')
istruzione, come quello che mysqldump
ritornerà?
Non ho accesso a phpMyAdmin, e mi preferibilmente non si desidera utilizzare exec
, system
o passthru
.
Vedere questa domanda per un altro metodo di esportazione
Soluzione
1) si può eseguire mysqldump da exec o passthru
2) dare un'occhiata a questo: http://www.php-mysql-tutorial.com/perform-mysql-backup-php.php
Altri suggerimenti
Se è possibile utilizzare php-script sul server mi sento di raccomandare phpmyadmin.Allora si può fare da interfaccia web.
Si dovrebbe verificare PHPMyAdmin, è un basato su php, MySQL strumento di amministrazione.Supporta il backup e il ripristino di base di dati così come un 'GUI' per il server di database.Funziona molto bene.
Sono abbastanza sicuro phpMyAdmin sarà fare questo per voi.
Questo
select 'insert into table table_name (field1, field2) values'
|| table_name.field1 || ', ' || table_field2 || ');'
from table_name
si dovrebbe ottenere iniziato.Sostituire || con l'operatore di concatenazione di stringhe per il tuo db sapore.Se campo1 o campo2 sono stringhe si dovrà venire con qualche trucco per citazione/fuga.
Qui è un approccio generando un sacco di query separato consolidato.È inoltre possibile utilizzare implodere in modo più efficiente combinare le corde, ma questo è più facile da leggere per antipasti e derivati da questo si può venire con un milione di altri approcci.
$results = mysql_query("SELECT * FROM `table_name`");
while($row = mysql_fetch_assoc($results)) {
$query = "INSERT INTO `table_name` ";
$fields = '(';
$values = '(';
foreach($row as $field=>$value) {
$fields .= "'".$field."',";
$values .= "'".mysql_escape_string($value)."',";
}
//drop the last comma off
$fields = substr($fields,0,-1);
$values = substr($values,0,-1);
$query .= $fields . " VALUES " . $values;
//your final result
echo $query;
}
Vedere se si è iniziato