Besoin d’exporter ponctuellement des données géographiques dans MySQL de façon rapide afin de les partager ou exploiter sur internet?
Voici une méthode simple et rapide pour importer des données géométriques dans une base de données MySQL en utilisant QGIS, LibreOffice Calc et PhpMyadmin.
Pour l’exemple, j’ai utilisé les communes de l’Isère issue d’Openstreetmap : http://export.openstreetmap.fr/contours-administratifs/communes/
Commençons par ouvrir le .shp dans QGIS en utilisant l’encodage UTF8.
Ensuite, dans la table attributaire, on sélectionne toutes les entités (ctrl+A), puis on copie l’ensemble . Enregistrer la couche en CSV en précisant que la géométrie soit en WKT (plus propre que le copier coller)
On ouvre ouvre libre office calc pour coller le tout avant de l’enregistrer en CSV (séparateur : ; et l’encodage toujours en UTF8)
Dans phpMyAdmin, j’importe ce CSV dans la base souhaité.
On renomme la table qui par défaut s’appelle « TABLE_1 » avec cette requête :
RENAME TABLE TABLE_1 TO isere;
On ajoute une clé primaire sur le code Insee :
ALTER TABLE isere ADD PRIMARY KEY ( REF_INSEE);
La géométrie (wkt_geom) est un champs texte, on va donc créer un champs « geom » de type géometry
ALTER TABLE isere ADD geom GEOMETRY NOT NULL;
On crée un index spatial, c’est mieux:
CREATE SPATIAL INDEX sp_index ON isere (geom);
On remplit le champs geom en utilisant le champ « wkt_geom »
UPDATE isere SET geom=GeomFromText(wkt_geom);
Enfin, on supprime la géométrie stocké en texte qui ne nous est plus utile
ALTER TABLE isere DROP wkt_geom;
Et voilà, les données sont dans mysql en moins de 5 minutes et sans utiliser d’ETL.