LinuxÉdu-Québec

Accueil À propos de nous Contact Plan du site
Accueil du site > Applications > Logiciels serveurs > Importer et exporter une base de données (fichier .sql)

Le samedi 14 juin 2003, par Benoit St-André, Pierre Lachance

Importer et exporter une base de données (fichier .sql)

Lorsque vous installez une application existante (Jobinote, phpSherpa, phpNuke,etc) vous n’avez pas à créer à la main toutes les tables et les champs de la base de données. Dans l’onglets « SQL » de l’application phpMyAdmin, vous avez une zone de saisie comme ci-dessous :

PNG - 5.3 ko
Importer un fichier .sql

Naviguez sur votre disque dur pour récupérer le fichier .sql contenant les commandes nécessaires à la création des tables et champs de la BDD. Ce fichier est généralement fourni avec les sources de l’application.

L’exportation [1] se fait grâce à l’onglets « Exporter ». Vous avez à sélectionner les tables à exporter et quelques autres caractéristiques, dont la compression de ce fichier.

Simple, non ?

Notes

[1] À faire lorsque vous voulez sauvegarder la BDD ou que vous voulez fournir le fichier .sql de l’application que vous avez créée.

29 Messages de forum

  • 15 juin 2003 09:29, par Stéphane LOJKINE, Montpellier

    J’ai un problème avec les signes diacritiques lorsque j’importe des fichiers depuis PhpMyadmin.

    J’ai une base de données 4D et je veux l’exporter en MySQL. J’ai conçu un petit programme qui transforme mes enregistrements 4D en requêtes du type "Insert into Table values (’...’,’...’,’...’, etc) ;". Ces requêtes sont stockées dans un fichier texte, que je vais chercher avec PhpMyAdmin en utilisant le bouton "Parcourir", comme dans votre article (j’ai dû par contre créer à la main mes tables). PhpMyAdmin m’importe bien les enregistrements, même avec un gros fichier, mais, bien que je me sois réglé sur "French" au départ, il ne réussit pas à lire les é, è, à, ù, etc... D’où, dans les champs, des affichages fantaisistes avec des Î, des Ü et autres bizarreries. C’est d’autant plus inexplicable pour moi que si j’exécute la même opération en copier-coller dans la fenêtre au dessus, les signes diacritiques sont correctement pris en compte.

    Mais le copier-coller ne prend en compte qu’un très petit nombre de requêtes à la fois. Sur plusieurs centaines de requêtes, quand on ne peut les entrer que 30 par 30, le risque d’erreur est trop grand (et c’est fastidieux).

    Avez-vous une solution à ce problème ? Précisions techniques : je travaille sur Mac OS X, avec Apache2, MySQL 4.0.12, PHP4 et PhpMyAdmin2.5.0-rc1

  • 16 juin 2003 09:19, par Benoit S.

    C’est clairement un problème avec l’encodage du fichier... ou du navigateur et ça vient du fait que vous êtes en MacOS...

    Peut-être vous pourriez essayer de l’importer en précisant l’encodage dans "Affichage" "Jeu de caractères" "Western (Mac-Roman)" dans Mozilla ? Il me semble que c’était une piste de solution...

    Donnez-nous en des nouvelles...

  • 16 juillet 2003 06:19, par http://www.toolao.net
    J ai eu également ce problème , je ne me suis pas cassé la tête , je suis passé sur PC , par contre si toi tu ne peux pas , utilises le logiciel de conversion "cyclone"
  • 23 juillet 2003 09:44, par Hervé

    Bonjour,

    pour bien gérer les caractères accentués avec MySQL, en attendant l’Unicode dans la prochaine version, il faut utiliser le type "BINARY" pour les données

    nom VARCHAR(40) BINARY NOT NULL, prenom VARCHAR (40) BINARY NOT NULL,

    etc.

    sinon il ne fera pas de différence entre "entête" et "entêté" par exemple ce qui pour des requêtes et/ou des index unique est bien sûr gênant.

    A+

  • 15 août 2003 13:28, par Naglafar
    Je n’arrive pas à utiliser PhpmyAdmin. Je l’ai installé sur mon site et j’ai ajouté dans la config l’adresse du phpmyadmin. Mais je n’arrive pas à le faire fonctionner. Quand j’ouvre index.php, rien ne se passe. Quand j’ouvre main.php et que je clique sur "exporter" ou "bases de données", il me dit "erreur 1044 : accès refusé pour l’utilisateur ’mk64_fr@wmphpf07.st2.lyceu.net’. Pouvez-vous m’aider s’il vous plait ? PS : Je cherche à transférer ma base de données qui est chez Lycos vers free.
  • 18 août 2003 13:52, par Stéphane LOJKINE

    En fait je pense que c’est un problème de gestion de la mémoire, car ma base comporte des champs texte assez importants. Si au lieu d’importer toute la base, j’importe les petites tables, sans champ texte, les signes diacritiques sont reportés correctement.

    J’ai provisoirement réglé le problème de la façon suivante : j’utilise Netscape et non plus Internet Explorer. Netscape semble mieux compatible avec phpmyadmin sur Macintosh : je ne peux pas importer directement le fichier mais je peux coller toutes mes requêtes d’un coup dans la fenêtre, et ça passe.

    Pour ceux que ça intéresserait, voici l’adresse du site : http://www.univ-montp3.fr/ pictura

    Merci pour vos conseils !

  • 18 août 2003 13:57, par Benoit St-André

    Est-ce que vous avez configuré MySQL à l’aide de PhpMyAdmin comme expliqué dans Sécuriser MySQL ? Si non, normalement, si vous ne pouvez le faire et que c’est déjà installé sur votre serveur, vous devriez probablement utiliser "localhost" comme nom de serveur et non pas le vrai nom de votre serveur. Remarquez, ça dépend des spécifications de Lycos...

    Avez-vous placé la ligne [auth_type] à cookie ? (parce que si vous pouvez cliquer sur "exporter" ou sur quelque chose comme ça, ça veut probablement dire que vous ne l’avez pas fait)....

    Donnez-nous en des nouvelles...

  • 21 août 2003 06:21

    Le type binary semble incompatible avec les champs texte (qui ne sont donc pas du type VARCHAR(40) comme dans votre exemple). Lorsque je demande de changer la propriété de mes champs texte (alter table...), phpmyadmin me répond "Check the MySQL syntax..." Avez-vous une solution ?

    http://www.univ-montp3.fr/ pictura (l’adresse du site comporte une tilde avant pictura)

    Merci

  • 28 octobre 2003 04:30, par Didier
    J’ai le même problème que celui qui a laissé le premier message. En fait, l’interface de phpmyadmin qui est chez free ne donne pas la possibilité de télécharger de base de donnée comme c’est le cas dans phpmyadmin 2.2.5 de l’exemple que tu as laissé dans ta réponse. EN fait il s’agit de l’interface 2.2.1 ! et rien ne permet de télécharger quoi que ce soit ! pourtant, ça doit être prévu pour ça ? alors d’après vous, que peut être notre problème qui fait que dans l’intercace de phpmyadmin, les foctions de création de base et de téléchargement n’existent pas ? merci d’avance pour votre réponse :-)
  • 29 décembre 2003 05:37, par Spif
    Free a mis à jour son script phpmyadmin, on peut exporter maintenant. :-)
  • 1er janvier 2004 03:01, par Cédric

    Bonjour,

    Y a-t-il des limitations au nombre d’enregistrements que phpMyAdmin est capable de traiter ? J’ai essayé d’importer une table de 16000 enregistrements (chacun d’eux était assez court, environ 30 caractères), mais phpMyAdmin a abandonné la partie. Rien n’a été importé. J’ai dû refaire l’importation par tranches de 1000 lignes. Est-ce une limite de PHP ? de sa configuration ? de MySQL ? Merci d’avance

  • 1er janvier 2004 09:29, par Gilles Jobin

    La limite est de 2 Megs. Je pense que c’est modifiable via le php.ini mais il y a une méthode alternative beaucoup plus intéressante et, surtout, TRÈS rapide.

    Supposons que votre fichier s’appelle aimporter.sql. Il faut l’importer dans "mabase". L’utilisateur de mabase est moimeme. Alors, en console entrez la commande :

    mysql -u moimeme -p mabase < aimporter.sql

    Au prompt, entrez votre mot de passe. Et hop, tout votre fichier sera importé !

  • 11 janvier 2004 18:53, par david andé

    bonjour,

    je cherche à faire une mise à jour entre mon site local et free. pour les fichiers, pas de pb via le ftp. par contre je ne sais pas comment faire pour la base. (mettre à jour la base distante avec les infos de la base locale. Les atbles ne changent pas, c’est juste les données que je dois mêttre à jour. Je dois le faire par un fichier .bat, car je fais d’autres opérations avant, et je voudrais mêttre cette mise à jour dans les taches planifiées.

    pouvez vous m’aide ?

    David david.ande@wanadoo.fr msn : david.ande@wanadoo.fr www.cygrob.free.fr

  • 13 janvier 2004 08:37, par Patrick

    J’ai essayé cette technique mai j’ai droit à un message d’erreur :

    Fatal error : Maximum execution time of 300 seconds exceeded in c :\program files\easyphp1-7\phpmyadmin\libraries\sqlparser.lib.php on line 385

    Une petite idée sur la question ?

    Un grand merci

    PS mon fichier sql fait 108 mg et je travaille sous Windows XP

  • 14 janvier 2004 15:52, par anonyme

    Recherche le fichier php.ini dans apache

    edite le fichier et recherche max_execution_time=30 et remplace le 30 par 300

    Si ca plante encore, remplace le 300 par 600

    Bonne chance

  • 14 janvier 2004 19:27, par Benoit St-André

    Plus que ça, il faut aussi augmenter 2 choses : - la limite d’upload de fichiers (qui est de 2Mo en standard) - la limite d’upload en méthode POST

    Ces deux directives se trouvent aussi dans le fichier php.ini, mais...

    pour des fichiers de cette importance (108Mo, ça fait une quantité très importante de requêtes SQL), le client mysql en ligne de commande est beaucoup plus efficace (parce qu’il ne passe pas par php qui est une "couche" de plus). Voir l’article Restaurer une grosse base de données

  • 15 janvier 2004 16:47, par ponsfrilus

    Bonjour, j’ai une BD Access comprenant 16000 enregistrement et je cherche un moyen (simple car je suis inexpérimenté) pour transférer cette BD vers MySQL. J’ai exporté un fichier text comprenant mes enregistrements mais lorsque je les importe pour repeupler ma table ce message d’erreur s’affiche :

    ldi_check.php : Missing db ldi_check.php : Missing table

    Quelqu’un connait-il un moyen efficace d’exporter directement un dichier sql depuis access ?

    Merci d’avance

  • 15 janvier 2004 22:59, par Gilles G. Jobin
    J’ai déjà utilisé votre méthode, soit la création d’un fichier texte où les champs sont séparés par un caractère du genre " ;", avec une ligne par enregistrement. Cependant, avant d’effectuer l’importation du fichier dans MySQL il vous faut recréer les tables avec, par exemple, phpmyadmin. Cordialement,
  • 16 janvier 2004 09:42, par Benoit St-André

    J’ai déjà fait ce genre d’importation depuis une base Access avec un logiciel gratuit (pas certain s’il est libre) appelé Mysql-Front http://www.mysqlfront.de/index.php

    Il me semble qu’il pouvait importer une base access via ODBC.

    Sinon, access peut il me semble exporter le contenu des tables en format csv qui peut être importé dans mysql par la suite...

  • 2 février 2004 10:20, par supachu
    Mmmmh, j’aimerais comprendre comment 16000 lignes de 30 caractères peuvent peser plus de 100 Meg... 100 kilos je veux bien, mais pas 100 Meg. Le problème vient peut-être du format du fichier d’origine. A mon avis, ce n’est pas un fichier texte.
  • 17 février 2004 17:54, par cristobal

    Dans access il est possible d’exporter ses tables vers des types externes, texte, csv et ... odbc. Il faut installer le driver mysql odbc, créé la base mysql, créer la connection odbc et ensuite, il suffit d’exporter les tables de access dans cette connection odbc.

    NB : les champs ne seront pas optimiser mysql, pas d’enum, boolean. Seule les formats pivots odbc seront utilisé : texte, int, date/heure ...

  • 19 janvier 2005 06:19

    Bonjour,

    PhpMyadmin limite la taille des fichiers texte à importer à 2048 Ko. De plus si vous travaillez sur un serveur distant il y a une limite de temps au téléchargement du fichier texte vers le serveur distant.

    Dans le cas où vous travaillez sur un serveur local sous Linux il faut :

    1/ Ouvrir la console

    2/ Taper mysql -p

    3/ Entrer le mot de passe mysql

    4/ Taper (exemple avec un fichier csv de 73 Mo avec 893573 enregistrements produit sous Windows et copié sur le serveur linux) :

    LOAD DATA LOCAL INFILE "/user/tmp/votrefichier.csv" INTO TABLE base.table FIELDS TERMINATED BY " ;" LINES TERMINATED BY "\r" (colonne1,colonne2,colonne3,colonne4,colonne5,colonne6,colonne7,colonne 8,colonne9,colonne10) ;

    5/ Si tout se passe bien voilà ce qui s’affiche à la fin des insertions : Query OK, 893573 rows affected (1 hour 12 min 24.45 sec) Records : 893573 Deleted : 0 Skipped : 0 Warnings : 0

    Une vérification via phpmyadmin m’indique que tout a été effectivement inséré dans ma table.

    Mon exemple insère des lignes depuis un fichier CSV vers certaines colonnes d’une table existante. Pour les options de LOAD DATA INFILE une recherche sur Google devrait vous donner des réponses (Ou bien consultez le site www.nexen.net).

    Pour être tout à fait honnète le problème que je rencontre ensuite est que je ne peux pas faire de sélection sur cette table via phpmyadmin (message d’erreur)... Peut-être ai-je trop d’enregistrements dans cette table ? Je cherche la réponse, aussi si vous avez une idée sur la question...

    Cordialement

  • 24 mars 2005 12:11, par Mathelec
    Bonjour, Je sais que je ne suis pas censer poster ici ... Mais c’est le seul site qui peux m’aider car j’ai une grosse BDD et je ne sais comment l’importer sans avoir d’erreur ... Je suis sous windows et j’utilise PhpMyAdmin mais je ne peux importer ma BDD a cause du temps et de la taille ... Merci de m’aider car je bloque ...
  • 24 mars 2005 12:28, par Benoit St-André

    Gilles Jobin avait expliqué cela dans l’article "Restaurer une grosse base de données".

    Bonne chance

  • 6 janvier 2006 03:59, par stef.mordant1@free.fr

    Bonjour,

    j’ai le même pb que vous, à savoir : je souhaite transférer la base de données montée via Wamp5 en local vers un ebase free. Merci de m’aider si vous étes parvenu à vos fins ! Salutations Stéphane

  • 26 janvier 2006 13:48, par pers_firewall

    bonjour voila j’ai un petit soucis pour exporter ma base de donnees sur le serveur distant : host=’mediassistance.sql.jexiste.fr’ ; user=’mediassistance’ ; pass=’firewall’ ; db=’firewall’ ;
    — --------------------------------------------------------

    — 
    — Structure de la table `utilisateurs`
    — voiila le debut de cette base : je me retrouve avec une erreur 1064 pourrier vous m’aider Merci

  • 10 février 2006 08:48, par mars mourad Grenoble

    pour importer votre base de données dans mysql, vous pouvez suivre les etapes suivantes :

    - Exporter ta table Access au format txt ou csv ;

    - Creer la table mysql ou bien avec du code php ou bien a l’aide de phpmyadmin ;

    - creer un code php qui permet de lire un fichier texte ligne par ligne et pour chaque ligne vous allez extraire tout les champs de la table qui sont separé par des ; ou ’ ou " ....

    - il vous reste qu’a creer une requette pour l’insertion de ces valeurs dans votre table mysql.

  • 3 mars 2006 11:44
    tu dois régler le port approprié et enregistrer tous vos fichiers sous ./mysql/bin/ ton serveur (par exemple appache) doit être lancé au moment de la gestion de ta base de données.
  • 16 mai 2007 04:08, par AMED_BTS_INFORMATIQUE_ALLIAS_T-BAG_pour_ce_ki_me_connaisse

    aidEZ moi au secours je suis en stage en informatique Mais la je suis bloque j’ai une base de données sous access que j’ai exporte en fichier txt .et la je voudrai fire migrer ce fichier txt vers une base de données en phpmyadmin.

    problème je me sert de easy php et dans le phpmyadmin qu’il ya dans la version de easy php il n’y a pas l’option importer table je sais plus quoi faire .VITE VITE AIDER MOI


Applications | LinuxÉdu-Québec | Revue de presse | Projets | Événements - colloques | Réflexion et opinion | Système d’exploitation