un passage quasi-obligatoire pour faire des sites web dynamiques

20.Exporter et importer des données

20.1.Importer dans MySQL de données issues de feuilles Excel

20.1.1.Introduction

Si vous possédez des données stockées dans des feuilles Excel, sous certaines conditions, il est possible de les importer dans une base de données MySQL.
Pour cela, il faut que:
  • Le contenu d'une feuille Excel soit déstiné à alimenter au plus une table
  • Chaque colonne corresponde à un champ (et chaque ligne à un enregistrement) de la table destination
  • Les colonnes de la table soient dans le même ordre (et en nombre identique) que ceux de la table destination
  • Les feuilles Excel ne contiennent que les données (pas d'entête de tableau)
rem
  • Il est généralement assez simple de remanier un document Excel pour que ces conditions soient remplies
  • Les feuilles Excel peuvent être exportées les unes après les autres

20.1.2.Exporter une feuille Excel

Sélectionner l'option "Sauvegarder sous..." du menu "Fichier". Choisir l'extension ".txt" (séparateur: tabulation). Après avoir saisi un nom de fichier (ex monfichier.txt), enregistrer le fichier.
Le fichier résultat est alors un fichier dans lequel les champs sont séparés par des tabulations. Certains champs, comme ceux comportant des point-virgules ou des guillemets, sont mis entre guillemets. Les guillemets contenus dans les champs sont quant à eux doublés. Ainsi la feuille
Champ 1Champ 2ici; ou làIl a dit "hello world" !
Donne le fichier suivant (ou [tab] représente une tabulation):
Champ 1[tab]Champ 2[tab]"ici; ou là"[tab]"Il a dit ""hello world"" !" 

20.1.3.Petit préparatif avant import

MySQL ne pouvant traiter les guillemets à la fois comme "englobeur" optionnel et comme "caractère d'échappement", il vous faut au préalable remplacer, dans le fichier TXT, tous les "" (series de 2 guillements) par \" (un antislash suivi d'un guillemet)
L'exemple précédent devient alors:
Champ 1[tab]Champ 2[tab]"ici; ou là"[tab]"Il a dit \"hello world\" !" 

20.1.4.Importer le fichier TXT sous MySQL

Il suffit pour cela d'utiliser la requête "LOAD DATA INFILE" en précisant les caractères utilisés comme séparateur, "englobeur", "caractère d'échappement", etc. (sachant que pour MySQL, le séparateur par défaut est la tabulation et le "caractère d'échappement par défaut est l'anti-slash)
LOAD DATA INFILE 'monfichier.txt' INTO TABLE matable FIELDS OPTIONALLY ENCLOSED BY '"'

20.2.Importer dans MySQL des données issues d'une base Access

20.2.1.Introduction

Si vous possédez des données stockées dans une base Access, sous certaines conditions, il est possible de les importer dans une base de données MySQL.
Pour cela, il faut que les champs de la table Access soient définis dans le même ordre que ceux de la table MySQL
remLes tables Access doivent être exportées les unes après les autres

20.2.2.Exporter une base Access

  • Sélectionner l'option "Enregister sous/Exporter..." du menu "Fichier"
  • Sélectionner "Vers un fichier ou une base de données externe". Puis cliquez sur "Ok"
  • Saisir un nom de fichier avec une extension ".txt". Puis cliquez sur "Exporter"
  • Sélectionner "Délimité". Puis cliquez sur "Suivant"
  • Sélectionner "Tabulation", Sélectionner l'apostrophe comme délimiteur de texte (Ne pas inclure les noms de champs sur la première ligne)
  • Vérifier le nom de fichier et cliquez sur "Terminer"
Le fichier résultat est alors un fichier dans lequel les champs sont séparé par des tabulations. Tous les champs sont mis entre apostrophes. Les apostrophes contenues dans les champs sont quant à eux doublés.
Ainsi la feuille:
Champ 1Champ 2ici; ou làC'est ça
Donne le fichier suivant (ou [tab] représente une tabulation)
'Champ 1'[tab]'Champ 2'[tab]'ici; ou là'[tab]'C\'est ça'

20.2.3.Importer le fichier TXT sous MySQL

Il suffit pour cela d'utiliser la requête "LOAD DATA INFILE" en précisant les caractères utilisés comme séparateur, "englobeur", "caractère d'échappement", etc. (sachant que pour MySQL, le séparateur par défaut est la tabulation, l'"englobeur" par défaut est l'apostrophe, et le "caractère d'échappement par défaut est l'anti-slash)
LOAD DATA INFILE 'monfichier.txt' INTO TABLE matable

20.3.Importer dans MySQL des données issues d'une base PostgreSQL

20.3.1.Introduction

Si vous possédez des données stockées dans une base PostgreSQL, sous certaines conditions, il est possible de les importer dans une base de données MySQL.
Pour cela, il faut que la base PostgreSQL n'ai pas été construite à l'aide de requête SQL non standard (ou en tout cas inconnue de MySQL)

20.3.2.Exporter le contenu de la base PostgreSQL

Sous le compte postgres (et hors psql), lancer la commande
/bin/pg_dump mabase > mabase.sql
Le résultat est alors un fichier contenant l'ensemble des requêtes SQL nécessaires à la construction et à l'alimentation de la base.

20.3.3.Import dans MySQL

  • Via la ligne de commande (unix) Sous le compte mysql (et hors mysql), lancer la commande: /bin/mysql mabase < mabase.sql ou éventuellement: /bin/mysql --user=nom_user --password=mot_de_passe mabase < mabase.sql
  • Via phpMyAdmin Cf. chapitre import du tutorial "Réplication de base MySQL"