8
7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 1/8 09/12/2015 15:03 (PHP) Exporter une base de donnee MySql avec Pdo Page 1 sur 8 http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html Fobec.com Source Accueil> php5 > db > Exporter une base de donnee MySql avec Pdo Chercher !"#$  %"&'()  *+,+  -.-  /012  324)5)"& Publié le 26/06/2014 Auteur Fobec Réseaux sociaux 2 partages 0 tweets 2 plus 0 commentaires Exporter une base de donnee MySql avec Pdo Les bases de données constituent le coeur des sites internet, l'article présente des méthodes pour exporter le contenu notamment à l'aide de PHP et l'extension Pdo. Lorsque l'on souhaite changer de serveur ou encore pour faire une sauvegarde de ses données, on a le choix entre plusieurs méthodes de sauvegarde et de restauration du contenu. Les principaux moteurs de base de données, y compris MySql, utilisent le format d'échange .sql, fichier contenant l'ensemble des instructions pour recrée la structure des bases et importer les données. COMMENT EXPORTER UNE TABLE MYSQL Du point de vue technique, le dump de la table est un fichier texte contenant l'instruction Sql servant à créer la structure de la table puis une succession d'INSERT pour ajouter les données. Outils en ligne de commande  MySql : exporter directement avec le moteur Mysql mysql --host host --user user --password pass nom_base_de_donnees > fichier_dump.sql  Mysqldump : paquet à installer en plus de MySql #installer le paquet sous Linux sudo apt-get install mysqldump #Dumper la table mysqldump -u root -p nom_base_de_donnees> fichier_dump.sql Outils avec interface Graphique hpMyAdmin: outil d'administration de MySql Dans l'onglet 'Exporter', sélectionner une ou plusieurs tables puis lancer l'export. EXPORTER UNE BASE DE DONNÉE AVEC PHP En poursuivant votre navigation sur ce site, vous acceptez l’utilisation de Cookies utilisés pour les publicités et pour les statistiques de visites, en savoir plus OK Nespresso™ Official Site Discover The Secrets Of Nespresso Treat Yourself To Luxury Coffee.

(PHP) Exporter Une Base de Donnee MySql Avec Pdo

Embed Size (px)

Citation preview

Page 1: (PHP) Exporter Une Base de Donnee MySql Avec Pdo

7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo

http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 1/8

09/12/2015 15:03(PHP) Exporter une base de donnee MySql avec Pdo

Page 1 sur 8http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html

Fobec.com Source

Accueil> php5 > db > Exporter une base de donnee MySql avec PdoChercher

!"#$   %"&'()   *+,+   -.-   /012   324)5)"&

Publié le 26/06/2014 Auteur Fobec Réseaux sociaux 2 partages 0 tweets 2 plus 0 commentaires

Exporter une base de donnee MySql avec PdoLes bases de données constituent le coeur des sites internet, l'article présente des méthodes pour exporter le contenunotamment à l'aide de PHP et l'extension Pdo. Lorsque l'on souhaite changer de serveur ou encore pour faire unesauvegarde de ses données, on a le choix entre plusieurs méthodes de sauvegarde et de restauration du contenu. Lesprincipaux moteurs de base de données, y compris MySql, utilisent le format d'échange .sql, fichier contenantl'ensemble des instructions pour recrée la structure des bases et importer les données.

COMMENT EXPORTER UNE TABLE MYSQL

Du point de vue technique, le dump de la table est un fichier texte contenant l'instruction Sql servant à créer lastructure de la table puis une succession d'INSERT pour ajouter les données.

Outils en ligne de commande MySql: exporter directement avec le moteur Mysql

mysql --host host --user user --password pass nom_base_de_donnees > fichier_dump.sql

 Mysqldump: paquet à installer en plus de MySql#installer le paquet sous Linuxsudo apt-get install mysqldump

#Dumper la tablemysqldump -u root -p nom_base_de_donnees> fichier_dump.sql

Outils avec interface GraphiquehpMyAdmin: outil d'administration de MySql

Dans l'onglet 'Exporter', sélectionner une ou plusieurs tables puis lancer l'export.

EXPORTER UNE BASE DE DONNÉE AVEC PHP

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation de Cookies utilisés pour les publicités et pourles statistiques de visites, en savoir plus OK

Nespresso™ Official SiteDiscover The Secrets Of Nespresso Treat Yourself To Luxury Coffee.

Page 2: (PHP) Exporter Une Base de Donnee MySql Avec Pdo

7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo

http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 2/8

09/12/2015 15:03(PHP) Exporter une base de donnee MySql avec Pdo

Page 2 sur 8http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html

Etant sur un serveur mutualisé, les outils en ligne de commande ne sont pas accessibles. Le script PHP permet deréaliser soi-même les opérations de dump avec possibilités d'automatiser le process de sauvegarde.La class MySqlDump exporte une ou plusieurs tables au format sql et compresse les fichiers directement dans unearchive zip.

<?php 

/** * MySqlDump Exporter une base de donnee MySql avec Pdo  * * @author Fobec 06/14 * @see http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html */  class MySqlDump { 

private $DB_CONF =  array('host' => '', 'name' => '', 'user' => '',  'password' => '', 'filter' => '*'  );  private $compressToZip = false;  private $colInfo = array();  private $MAX_SQLFILE_SIZE = 1000; //in Mo  

public function asZipArchive($host, $dbname, $user, $password, $filter = '*') {  $this->DB_CONF = array('host' => $host,  'name' => $dbname,  'user' => $user,  'password' => $password,  'filter' => $filter); 

$this->compressToZip = true;  $fziparchive = tempnam (sys_get_temp_dir(), $this->DB_CONF['name']); 

$files_dumpsql = $this->backupDB($this->DB_CONF, $fziparchive); if ($this->isZipValid($fziparchive, $files_dumpsql) == FALSE) {

  echo "ZipArchive seems to be corrupt";  } else {  header("Content-Type: application/zip");  header("Content-Transfer-Encoding: Binary");  header("Content-Length: " . filesize($fziparchive));  header('Content-Disposition: attachment; filename="' . $this->DB_CONF['name'] . '.z  header("Content-Transfer-Encoding: binary");  header('Expires: 0');  header('Pragma: no-cache');  /* ob_clean();  flush(); */ 

  readfile($fziparchive);  exit(0);  }  } 

/**  * Fixer la taille maximale du fichier d'export Sql  * @param type $maxsize taille en Mo   */   public function setMaxFileSize($maxsize) {  $this->MAX_SQLFILE_SIZE = $maxsize;  } 

/**

  * Lancer l'export d'une base de donnée   * @param type $db_conf   * @param type $fziparchive  

Page 3: (PHP) Exporter Une Base de Donnee MySql Avec Pdo

7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo

http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 3/8

09/12/2015 15:03(PHP) Exporter une base de donnee MySql avec Pdo

Page 3 sur 8http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html

 */ 

  private function backupDB($db_conf, $fziparchive = '') {  set_time_limit(60);  $file_dumptable = array(); 

try {  $pdo = new PDO('mysql:host=' . $db_conf['host'] . ';dbname=' . $db_conf['name'], $d  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

//List table from DBname   $stmt = $pdo->prepare('SHOW TABLES');  $stmt->execute(); 

/** Table filter * */   $filter_table = explode(';', $db_conf['filter']); 

 while ($row = $stmt->fetch(PDO::FETCH_NUM)) {  if (in_array($row[0], $filter_table) || $db_conf['filter'] == '*') {  $tables[] = $row[0];  }  }  $stmt->closeCursor();  $pdo = null; 

/* Dump each Table **/   foreach ($tables as $tablename) {  $ntemp = $this->backupTable($db_conf, $tablename, $fziparchive);  foreach ($ntemp as $sqlfile) {  $file_dumptable[] = $sqlfile;  }  }//end loop table  

return $file_dumptable;  } catch (PDOException $err) {  $msg =  __METHOD__  . ' - ' . $err->getMessage();  echo $msg;

  $this->pdo = NULL;  }  } 

/**  * Export Table to SQL File, files can be split  * @param type $db_conf   * @param type $tablename   * @param type $fziparchive   * @return string   */   private function backupTable($db_conf, $tablename, $fziparchive = '') {  $pdo = new PDO('mysql:host=' . $db_conf['host'] . ';dbname=' . $db_conf['name'], $db_co  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Avoid General error: 2008 MySQL client ran out of memory   $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); 

$sql_files = array();//Open new SQL File   $tmpfile = tempnam (sys_get_temp_dir(), $tablename);  $filelabel = $tablename . '.sql';  $sql_files[] = array('file' => $tmpfile, 'name' => $filelabel);  $fhandle = fopen($tmpfile, 'w'); //Create Table SQL  $stmt = $pdo->prepare('SHOW CREATE TABLE ' . $tablename);  $stmt->execute();  $rs = $stmt->fetch(PDO::FETCH_NUM);  $buf = '-- MySqlDump v.09 ' . "n";  $buf.='-- http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html' 

$buf.='-- server: ' . $db_conf['host'] . "n"; 

Page 4: (PHP) Exporter Une Base de Donnee MySql Avec Pdo

7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo

http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 4/8

09/12/2015 15:03(PHP) Exporter une base de donnee MySql avec Pdo

Page 4 sur 8http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html

  u .= -- a e: . a e m : :s  . n ;  $buf.='-- db: ' . $db_conf['name'] . "nn";  $buf.='-- create table: ' . $tablename . "nn";  $buf.= $rs[1] . ';' . "nn";  fwrite($fhandle, $buf);  $stmt->closeCursor(); 

//colmuns type   $stmt = $pdo->prepare('SHOW COLUMNS FROM ' . $tablename);  $stmt->execute();  $this->colInfo = $stmt->fetchAll(PDO::FETCH_NUM);  $col_mapping = $this->parseColInfo($this->colInfo);  $stmt->closeCursor(); 

//Select All  $stmt = $pdo->prepare('SELECT * FROM ' . $tablename);  $stmt->execute(); 

$line = '';  $buf = '';  $filecount = 2; 

 while ($row = $stmt->fetch(PDO::FETCH_NUM)) {

  $buf = "INSERT INTO " . $tablename . " VALUES ("; $len = count($row);

  //Buffer value add slash if dif. than int  for ($i = 0; $i < $len; $i++) {  if ($i != ($len - 1)) {  $buf.=$this->setValue($row[$i], $col_mapping[$i]) . ',';  } else {  $buf.=$this->setValue($row[$i], $col_mapping[$i]);  }  } 

$buf = $this->removeLineBreak($buf);  $line.=$buf . ");n";

  $buf = ''; 

//Write SQL commands to file   fwrite($fhandle, $line); 

//Start new file if max size reach  if (ftell($fhandle) > (1024 * 1024 * $this->MAX_SQLFILE_SIZE)) {  fclose($fhandle); 

$this->addTozipFile($fziparchive, $tmpfile, $filelabel);  $sql_files[] = array('file' => $tmpfile, 'name' => $filelabel); 

$tmpfile = tempnam (sys_get_temp_dir(), $tablename . '_' . $filecount);  $filelabel = $tablename . '_' . $filecount . '.sql';

  $filecount++;  $fhandle = fopen($tmpfile, 'w');  }  $line = '';  } 

fclose($fhandle);  $this->addTozipFile($fziparchive, $tmpfile, $filelabel); 

$stmt->closeCursor();  $pdo = null; 

return $sql_files;

  } /**

  * Compress Sql File in ZipArchive  

Page 5: (PHP) Exporter Une Base de Donnee MySql Avec Pdo

7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo

http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 5/8

09/12/2015 15:03(PHP) Exporter une base de donnee MySql avec Pdo

Page 5 sur 8http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html

  * @param type $fzip   * @param type $file_path  * @param type $file_name   */   private function addTozipFile($fzip, $file_path, $file_name) {  if ($this->compressToZip == true) {  $zip = new ZipArchive();  $zip->open($fzip, ZIPARCHIVE::CREATE);  $zip->addFile($file_path, $file_name);

  $zip->close();  }  } 

/**  * Check if all sql files have been added   * @param type $zipfile   * @param type $files_sql  * @return boolean  */   private function isZipValid($zipfile, $files_sql) {  $zip = new ZipArchive;  $res = $zip->open($zipfile);

  if ($res === TRUE) {  foreach ($files_sql as $zfile) {  $n = $zip->statName($zfile['name']);  if ($n == FALSE || $n['size'] < 10) {  $zip->close();  return FALSE;  }  }  $zip->close();  } else {  return FALSE;  }  return TRUE;  }

 /**

  * Add Slashes if Value is String   * @param type $val  * @param type $isInt  * @return string   */   private function setValue($val, $isInt) {  if ($isInt) {  return $val;  } else {  if (!empty($val)) {  $sval = addslashes($val);  return "'" . $sval . "'";  } else {  return "''";  }  }  } 

/**  * Remove Line break   * @param type $line   * @return type   */   private function removeLineBreak($line) {  $nsearch = array("rn", "n", "r");

  $nreplace = array('rn', 'n', 'r'); 

$sline = str replace($nsearch, $nreplace, $line);

Page 6: (PHP) Exporter Une Base de Donnee MySql Avec Pdo

7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo

http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 6/8

09/12/2015 15:03(PHP) Exporter une base de donnee MySql avec Pdo

Page 6 sur 8http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html

Pseudo *  Votre pseudo Adresse email *  Votre adresse email

COMMENT FAIRE UN DUMP D'UNE TABLE

La class MySqlDump se pilote rapidement dans un script php, il suffit d'autoriser la connexion au serveur Mysql, toutreste des opérations de dump est automatique.

filtre: par défaut le caractère * indique que toutes les tables sont à exporter. La définition d'une sélection de table estpossible en séparant le nom des tables avec ;setMaxFileSize: la taille des fichiers d'export peut être limitée par exemple à 2 Mo pour faciliter l'import viaphpMyAdmin. Attention, lors de l'import toujours commence par le 1er fichier car il contient la structure de la tableexport: les données sont retournées au format zip directement dans le navigateur internet. La class peut être modifiéepour enregistrer les données dans un répertoire donnée ou envoyé par email.

Sur un hébergement mutualisé de type 1and1, une erreur 500 peut survenir lors de l?exécution du script de dump. Encherchant la raison, il semble que l?hébergeur limite la durée d?exécution du script dans les pack mutualisés, donc çase sert à rien d'augmenter le timeout avec set_time_limit() par exemple.Il serait intéressant d'implémenter une fonction resume ou d'export partielle à la class. Justement pour contourner lalimitation des timeout lors des export de tables, la sauvegarde pourrait être reprise à l'ancienne position.

Ajouter un commentaire

   _   

return $sline;  } 

/**  * Build Field array with field type   * @param type $rs  * @return boolean  */ 

  private function parseColInfo($rs) {  $len = count($rs);  $map = array();  for ($i = 0; $i < $len; $i++) {  if (substr($rs[$i][1], 0, 3) == 'int' || $rs[$i][1] == 'float') { //'Type'  $map[] = true;  } else {  $map[] = false;  }  }  return $map;  } }

?> 

<?phprequire $_SERVER['DOCUMENT_ROOT'] . '/' . 'MySqlDump.php';

 $mySqlDump = new MySqlDump();$mySqlDump->setMaxFileSize(2);$mySqlDump->asZipArchive("adresse_serveur", "base_de_donnee", "user", "password", 'table1;table?>

Page 7: (PHP) Exporter Une Base de Donnee MySql Avec Pdo

7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo

http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 7/8

09/12/2015 15:03(PHP) Exporter une base de donnee MySql avec Pdo

Page 7 sur 8http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html

Site internet  http:// 

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées. Publier le commentaire

Afficher l'avertissement sur l'utilisation des cookies

Votre commentaire

A LIRE AUSSI

Se connecter

Mot de passe oublié

Catégorie php5 - db

Mise a jour 26/06/2014

Visualisation vu 3708 fois

Public Internaute

Espace membre

Réseaux sociaux

Présentation de l'article

Auteur de la publication

Page 8: (PHP) Exporter Une Base de Donnee MySql Avec Pdo

7/23/2019 (PHP) Exporter Une Base de Donnee MySql Avec Pdo

http://slidepdf.com/reader/full/php-exporter-une-base-de-donnee-mysql-avec-pdo 8/8

09/12/2015 15:03(PHP) Exporter une base de donnee MySql avec Pdo

Page 8 sur 8http://www.fobec.com/php5/1148/exporter-une-base-donnee-mysql-avec-pdo.html

FobecAdmin

Auteur de 255 articles

Contacter Fobec

Visiter le blog de Fobec

Afficher l'avertissement sur l'utilisation descookies

Supprimer les accents d'une chaine de caracteres

Modifier les droits des fichiers

Liste commande recherche Google

Historique des versions de Windows

Du meme auteur

Commentaires récentsPublié par IB dans tuto

Merci ca marche bien.

Publié par Franzi dans java

Bonjour,

Le code est simple et compile, après être entré dans public

void connect, il n'effectue pas this.session.get.transport et

s'arrête. Sous eclipse avec Tomcat, j'ob...

Publié par Fobec dans CMS

//une variante avec UrlMon

usesUrlMon;

function GetPageContent(URL: string): string;

var

MyFile: file;

Buf: array[0..14] of Char;

Filename: string;

Publié par Bonjour dans java

Joli travail!

Par contre, savez vous que votre barre de progression

s'arrête à un certain pourcentage?

Publié par RIJAPOTAK dans CMSPILOTAGE SCANNER (TWAIN-WIA), IPTC, EXIF,

METADATA, ICC PROFILES,

D&Atilde;&copy;veloppement des logiciels, Traitement

d'image, Traitement en Batch d'image et Pdf 

Suivez-nous Copyright © 2000-2015 www.fobec.com

Le site

Facebook Twitter Google + 0.073 sec - che - tpl v2.0

Flux RSS   Plan du site   Contact