2009-11-12 16 views
6

Voglio esportare dati e struttura dal database MySQL usando PHP. So del comando SELECT INTO OUTFILE ma voglio avere il file come quello generato da PhpMyAdmin nella finestra Esporta, quindi tutti gli CREATE TABLE e INSERT INTO.Esportare struttura e dati (come in PhpMyAdmin)

HDo sai come PhpMyAdmn genera questi file? Stavo dando un'occhiata al codice e ho trovato il comando SELECT INTO OUTFILE al suo interno. Ma non sono sicuro che questo comando venga usato per generare quella struttura. C'è qualche altro comando per fare questo, o il file esportato viene creato manualmente usando le informazioni sullo schema delle tabelle?

+0

Un giorno ho bisogno di leggere la domanda correttamente prima prima di scrivere le risposte. Ho suggerito 'mysqldump' prima di notare che hai chiesto una soluzione PHP. –

+0

Così ho fatto ... 'system ('mysqldump')' è PHP, non sarebbe adatto? – Wim

+0

Sfortunatamente, la funzione 'system' è disabilitata sul mio server. –

risposta

7

È possibile farlo utilizzando SHOW CREATE TABLE.

+0

Grazie. Non conoscevo questo comando. E i dati? C'è qualche Insert Generator? –

+0

Nulla di ciò che so, ma è possibile generare facilmente le istruzioni INSERT in base alla struttura della tabella e al risultato di SELECT. – candiru

4

Ho creato uno script php per il backup di tabelle mysql (solo dati). ciò esportare i dati di MySQL in un file sql che è pienamente compatibile con l'importazione phpMyAdmin

può essere questo potrebbe aiutare a

mysql data backup script in php: http://dl.dropbox.com/u/18434517/mysql_backup.php

+0

Questo non è esattamente a prova di pieno: '$ lines. =" '". str_replace ("\ n", "\\ n", $ datas [$ i]). "'" ' Probabilmente preferiresti usare' mysql_real_escape_string' o 'mysqli_real_escape_string'. – bart

+0

È una bella sceneggiatura. Meglio se è stato migliorato mysql (mysqli). La versione semplice viene lentamente deprecata. – David

2

Qui è possibile trovare una soluzione completa per eseguire il dump struttura di MySQL e di dati come in PMA (e senza usare exec, passante ecc):

https://github.com/antarasi/MySQL-Dump-with-Foreign-keys

e 'fork del progetto di dszymczuk con i miei miglioramenti.

L'utilizzo è semplice

<?php 
//MySQL connection parameters 
$dbhost = 'localhost'; 
$dbuser = 'dbuser'; 
$dbpsw = 'pass'; 
$dbname = 'dbname'; 

//Connects to mysql server 
$connessione = @mysql_connect($dbhost,$dbuser,$dbpsw); 

//Set encoding 
mysql_query("SET CHARSET utf8"); 
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); 

//Includes class 
require_once('FKMySQLDump.php'); 


//Creates a new instance of FKMySQLDump: it exports without compress and base-16 file 
$dumper = new FKMySQLDump($dbname,'fk_dump.sql',false,false); 

$params = array(
    //'skip_structure' => TRUE, 
    //'skip_data' => TRUE, 
); 

//Make dump 
$dumper->doFKDump($params); 

?> 

funziona come un fascino :-)