Domanda

Come posso fare il backup di un database SQL usando PHP.

Esiste un modo indipendente dal fornitore per farlo conforme a ANSI SQL?

Altrimenti forse puoi elencare come farlo per ciascuno dei fornitori di database?

È stato utile?

Soluzione

Ogni sistema di database viene fornito con alcuni programmi per il dumping dei suoi contenuti.

Puoi semplicemente chiamare quel programma da PHP usando system () o shell_exec () .

Ad esempio, se si utilizza PostgreSQL con abilitato autenticazione e desideri scaricare il test del database direttamente come testo SQL nel browser, è semplice come:

<?php
header('Content-type: text/plain');
system('pg_dump test');
?>

Quando si utilizza MySQL con l'utente del database e la password archiviati nel ~ / .my.cnf , è anche molto semplice:

<?php
header('Content-type: text/plain');
system('mysqldump test');
?>

Tuttavia, non farlo:

<?php
header('Content-type: text/plain');
system('mysqldump -utestuser -ptestpassword test');
?>
perché la trasmissione di una password come argomento della riga di comando è molto insicuro .

Altri suggerimenti

È un processo piuttosto complicato. Ti consiglio di usare phpmyadmin o simili.

Durante il backup di un database "conforme a ANSI SQL" è possibile e ammirevole, incontrerai comunque problemi di portabilità. Il più ovvio è che mentre il formato dump / restore di MySQL è abbastanza veloce, lo ottiene principalmente usando un'estensione non standard a SQL. Quindi non puoi semplicemente consegnare il dump a PostGresql: non funzionerà. In effetti, PostGresql è anche abbastanza lento nel gestire una grande quantità di istruzioni INSERT. Il suo formato di dump nativo utilizza la sua istruzione SQL personalizzata ottimizzata per l'inserimento di una grande quantità di dati contemporaneamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top