OVH Community, votre nouvel espace communautaire.

exporter et importer une base de donnée via phpmyadmin


detecteur13
17/07/2011, 19h12
merci beaucoup pour votre réponse.
j'aurais une dernière question à propos de l'encodage:

un technicien d'ovh m'a dit qu'il fallait encoder les fichier en uft8 avant de les importer. quand j'ouvre avec notepad les fichiers .sql que j'ai exporté il y a marqué ANSI AS UFT8. est-ce-que c'est bon ou dois-je les encoder en UFT8?

quand j'ouvre avec notepad le fichier .dumb il y a marqué UFT8, mais quand j'utilise un script de découpe (SQLdumpsplit) le fichier de structure des tables est en UFT8 mais les fichiers de données sont en ANSI. est-ce-que c'est bon ou est-ce-que les données doivent aussi être en UFT8? je demande celà car j'ai essayé dans phpmyadmin et quand j'exécute (copier/coller) des fichiers de données en ANSI çà à l'air bon mais quand je le fais en UFT8 j'ai un message d'erreur.

RobertG
17/07/2011, 17h49
Dans les deux cas, ce sont des instructions SQL, qui seront donc reconnues comme telles à l'importation.

detecteur13
17/07/2011, 17h07
merci pour votre réponse mais pour le php je n'y connais rien.
je vais essayer de préciser ma question:
pour importer ma base de donnée j'ai à ma disposition des fichiers .sql (un par table) sauf deux tables qui étaient trop grosses (je n'ai pas pu les exporter). pour ces deux tables j'ai un fichier .dumb (sauvegarde ovh)
pour importer ma base de donnée sur le nouvel hébergement je compte dans phpmyadmin cliquer sur SQL puis faire des copier/coller-exécuter des fichiers .sql
ma question est la suivante:
pour les deux tables ou j'ai un fichier .dumb, est-ce-que je peux procéder de la même manière (copier/coller-exécuter)?
est-ce-que j'obtiendrai le même résultat qu'avec un fichier .sql?
je me pose ces questions à causes des différences entre .sql et .dumb que j'ai précisé dans mon premier message.
pour résumer:
est-ce-qu'au final on obtient la même chose en important un fichier .sql et un fichier .dumb, ou faut-il modifier le fichier .dumb?

Gaston_Phone
17/07/2011, 11h25
Oui il y a a une limite pour faire un export de tables via Phpmyadmin : Celle du Time-Out.

Pour les grosses bases préférer mysqldump.

Soyons prétentieux dans nos conseils!

Avec l'aimable autorisation de sfk, une piste :

Comment faire un Backup/Restor de mes bases de données MUTUALISEES ?
-------------------------------------------------------------------------------

Bonjour, j'utilise le format GZIP.

Dans un script PHP je mets :

Sauvegarde GZIP - Toutes les tables :

Code PHP:
   error_reporting(E_ALL); // Activer le rapport d'erreurs PHP

   
$db_charset "latin1"/* mettre utf8 ou latin1 */

   
$db_server         "xxxxxx"// Nom du serveur MySQL.  ex. mysql5-26.perso
   
$db_name           "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_username       "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_password       "xxxxxx"// Mot de passe de la base de données.

   
$cmd_mysql "mysqldump";

   
$archive_GZIP      "sauve_base_format_gzip.gz";

   echo 
" Sauvegarde de la base $db_name par mysqldump dans le fichier 
$archive_GZIP 
 \n";
   
$commande $cmd_mysql." --host=$db_server --user=$db_username --password=$db_password -C -Q -e --default-character-set=$db_charset  $db_name    | gzip -c > $archive_GZIP ";
   
$CR_exec system($commande);
?>
Sauvegarde GZIP - quelques tables :

Code PHP:
   error_reporting(E_ALL); // Activer le rapport d'erreurs PHP

   
$db_charset "latin1"/* mettre utf8 ou latin1 */

   
$db_server         "xxxxxx"// Nom du serveur MySQL.  ex. mysql5-26.perso
   
$db_name           "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_username       "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_password       "xxxxxx"// Mot de passe de la base de données.

   
$cmd_mysql "mysqldump";

   
$archive_GZIP      "sauve_base_format_gzip.gz";

   
$Liste_tables_a_sauvegarder " Table1 Table2 Table3 Table4 Table5 ... ";

   echo 
" Sauvegarde de la base $db_name par mysqldump dans le fichier 
$archive_GZIP 
 \n";
   
$commande $cmd_mysql." --host=$db_server --user=$db_username --password=$db_password -C -Q -e --default-character-set=$db_charset  $db_name  $Liste_tables_a_sauvegarder  | gzip -c > $archive_GZIP ";
   
$CR_exec system($commande);
?>

Sauvegarde GZIP - sauve tables avec liste tables à exclure :

Code PHP:
   error_reporting(E_ALL); // Activer le rapport d'erreurs PHP

   
$db_charset "latin1"/* mettre utf8 ou latin1 */

   
$db_server         "xxxxxx"// Nom du serveur MySQL.  ex. mysql5-26.perso
   
$db_name           "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_username       "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_password       "xxxxxx"// Mot de passe de la base de données.

   
$cmd_mysql "mysqldump";

   
$archive_GZIP      "sauve_base_format_gzip.gz";

   
$Prefixe_tables_a_exclure " --ignore-table=".$db_name.".jomla1_";

   echo 
" Sauvegarde de la base $db_name par mysqldump dans le fichier 
$archive_GZIP 
 \n";
   
$commande $cmd_mysql." --host=$db_server --user=$db_username --password=$db_password -C -Q -e --default-character-set=$db_charset  $db_name  $Prefixe_tables_a_exclure  | gzip -c > $archive_GZIP ";
   
$CR_exec system($commande);
?>

Restauration GZIP
Code PHP:
   error_reporting(E_ALL); // Activer le rapport d'erreurs PHP

   
$db_charset "latin1"/* mettre utf8 ou latin1 */

   
$db_server         "xxxxxx"// Nom du serveur MySQL.  ex. mysql5-26.perso
   
$db_name           "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_username       "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_password       "xxxxxx"// Mot de passe de la base de données.

   
$cmd_mysql "mysql";

   
$archive_GZIP      "sauve_base_format_gzip.gz";

   if (!
is_file($archive_GZIP))   echo "Le fichier ".$archive_GZIP." n'existe pas  
 \n"
;

   echo 
" Restauration de la base $db_name par mysql depuis le fichier $archive_GZIP 
 \n";
   
$commande "gzip -d < $archive_GZIP | $cmd_mysql --host=$db_server  --user=$db_username --password=$db_password $db_name";
   
$CR_exec system($commande); 
?>
Restauration SQL
Code PHP:
   error_reporting(E_ALL); // Activer le rapport d'erreurs PHP

   
$db_charset "latin1"/* mettre utf8 ou latin1 */

   
$db_server         "xxxxxx"// Nom du serveur MySQL.  ex. mysql5-26.perso
   
$db_name           "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_username       "xxxxxx"// Nom de la base de données.  ex. mabase
   
$db_password       "xxxxxx"// Mot de passe de la base de données.

   
$cmd_mysql "mysql";

   
$archive_SQL      "Sauve_Base.SQL";

   if (!
is_file($archive_SQL))   echo "Le fichier ".$archive_SQL." n'existe pas  
 \n"
;

   echo 
" Restauration de la base $db_name par mysql depuis le fichier $archive_SQL 
 \n";
   
$commande "$cmd_mysql --host=$db_server  --user=$db_username --password=$db_password $db_name  < $archive_SQL";
   
$CR_exec system($commande); 
?>

Analyse :
Pour la partie sauvegarde pas de risque.
Pour la partie restauration, s'assurer au préalable que la sauvegarde est correcte :
  • Transfert de la sauvegarde sur ton micro,
  • Dé-zippe le fichier sauvegarde,
  • Ouvre avec NOTEPAD.EXE le fichier extrait.


Le fichier extrait doit avoir une taille conséquente et commencer par quelque chose qui ressemble à :

-- MySQL dump 10.13 Distrib 5.1.35, for Win32 (ia32)
--
-- Host: localhost Database: YYY
-- ------------------------------------------------------
-- Server version 5.1.35-community

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `tbl_adresses`
--

DROP TABLE IF EXISTS `Table_xxx`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `Table_xxx` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
...
`DER` varchar(3) NOT NULL DEFAULT '',
PRIMARY KEY (`Id`),
KEY `Id` (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=2561 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `Table_xxx`
--

LOCK TABLES `Table_xxx` WRITE;

detecteur13
17/07/2011, 10h15
bonjour,

je précise que je n'ai aucune connaissance dans ce domaine, je commence à peine à "mettre le nez dedans", donc veuillez me pardonnez si vous trouvez mes questions stupides. la base de donnée de mon forum phpbb risquant d'atteindre la limte de mon hébergement perso, j'ai pris un hébergement pro pour bénéficier de 500 MO. maintenant le plus dure commence pour moi:

1/exporter une base de donnée:

y-a-t-il une limite de poids ou de temps pour exporter via phpmyadmin (j'ai une connection 512 k0)?
en effet quand j'essaye via phpmyadmin d'exporter ma base de donnée (25 MO), le téléchergement s'arrête aux alentour de 6 MO et j'obtiens donc un fichier .sql incomplet. si j'essaye en cochant zip là aussi j'obtiens un fichier incomplet. si je procède table par table, les fichiers .sql sont là aussi incomplets, par contre en cochant zip là j'obtiens enfin des fichiers complets.


2/importer une base de données:

je voudrais connaitre la différence entre un fichier .sql et un fichier .dumb car
je note énormément de différences entre le fichier .sql et le fichier .dumb

1-au niveau de l'entête:

.sql

Code: Tout sélectionner
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

.dumb

Code: Tout sélectionner
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES latin1 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!4011-- MySQL dump 10.11

2- niveau de la structure des tables (exemple avec banlist):

.sql

Code: Tout sélectionner
CREATE TABLE IF NOT EXISTS `phpbb_banlist` (
`ban_id` mediumint(8) unsigned NOT NULL auto_increment,
`ban_userid` mediumint(8) unsigned NOT NULL default '0',
`ban_ip` varchar(40) collate utf8_bin NOT NULL default '',
`ban_email` varchar(100) collate utf8_bin NOT NULL default '',
`ban_start` int(11) unsigned NOT NULL default '0',
`ban_end` int(11) unsigned NOT NULL default '0',
`ban_exclude` tinyint(1) unsigned NOT NULL default '0',
`ban_reason` varchar(255) collate utf8_bin NOT NULL default '',
`ban_give_reason` varchar(255) collate utf8_bin NOT NULL default '',
PRIMARY KEY (`ban_id`),
KEY `ban_end` (`ban_end`),
KEY `ban_user` (`ban_userid`,`ban_exclude`),
KEY `ban_email` (`ban_email`,`ban_exclude`),
KEY `ban_ip` (`ban_ip`,`ban_exclude`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=31 ;

.dumb

Code: Tout sélectionner
DROP TABLE IF EXISTS `phpbb_banlist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `phpbb_banlist` (
`ban_id` mediumint(8) unsigned NOT NULL auto_increment,
`ban_userid` mediumint(8) unsigned NOT NULL default '0',
`ban_ip` varchar(40) collate utf8_bin NOT NULL default '',
`ban_email` varchar(100) collate utf8_bin NOT NULL default '',
`ban_start` int(11) unsigned NOT NULL default '0',
`ban_end` int(11) unsigned NOT NULL default '0',
`ban_exclude` tinyint(1) unsigned NOT NULL default '0',
`ban_reason` varchar(255) collate utf8_bin NOT NULL default '',
`ban_give_reason` varchar(255) collate utf8_bin NOT NULL default '',
PRIMARY KEY (`ban_id`),
KEY `ban_end` (`ban_end`),
KEY `ban_user` (`ban_userid`,`ban_exclude`),
KEY `ban_email` (`ban_email`,`ban_exclude`),
KEY `ban_ip` (`ban_ip`,`ban_exclude`)
) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;

3-au niveau des données (exemple avec banlist)

.sql

Code: Tout sélectionner
INSERT INTO `phpbb_banlist` (`ban_id`, `ban_userid`, `ban_ip`, `ban_email`, `ban_start`, `ban_end`, `ban_exclude`, `ban_reason`, `ban_give_reason`) VALUES(2, 502, '', '', 1294647824, 0, 0, '', '');

.dumb

Code: Tout sélectionner
LOCK TABLES `phpbb_banlist` WRITE;
/*!40000 ALTER TABLE `phpbb_banlist` DISABLE KEYS */;
INSERT INTO `phpbb_banlist` VALUES (2,502,'','',1294647824,0,0,'','');

je voulais savoir:

-malgré ces différences, est-ce-que au final le résultat sera le même suivant que j'importe ma base de donnée avec les fichiers .sql ou avec les fichiers .dumb?

-peut-on importer une partie de la base de données en utilisant des fichier .sql et une autre partie en utilisant des fichiers .dumb?
si oui est-ce-que dans le fichier .dumb on ne doit laisser que la structure de la table et les données ou est-ce-qu'en plus il faut laisser l'entête?

-peut-on copier des données dans un fichier .dumb pour les coller dans un fichier .sql et inversement (je pense que non puisque la structure des tables est écrite de façon différente mais je voudrais confirmation).

merci d'avance pour vos réponses, n'hésitez pas à me demander des précisions car j'ai bien conscience que mon message est un peu embrouillé.