Le pilote implémente l’accès en lecture et écriture pour les données spatiale dans les tables MySQL. Cette fonctionnalité a été introduite dans GDAL/OGR 1.3.2.
Lors de l’ouverture d’une base de données, son nom doit être définie sous la forme “MYSQL:dbname[,options]” où options peut inclure des informations séparées par des virgules comme “user=*userid*”, “password=*password*”, “host=*host*” et “port=*port*”.
De même, une option “tables=*table*;*table*...” peut être ajouté pour restreindre l’accès à une liste spécifique de tables dans la base de données. Cette option est d’abord utile lorsqu’une base de données contient beaucoup de tables, et scanner tout le schéma prendrait beaucoup de temps.
Pour l’instant toutes les tables habituelles sont supposées être des couches d’un point de vue d’OGR., avec les noms des tables comme nom de couche. Les vues nommées ne sont pas gérées pour l’instant.
Si un champ d’entier simple est une clé primaire, il sera utilisé comme FID autrement le FID sera assigné séquentiellement et la recherche par FID sera extrêmement lente.
Par défaut, les requêtes SQL sont passé directement au moteur de base de données MySQL. Il est également possible de questionner le pilote pour prendre en charge les commandes SQL avec le [[ogr_sql|moteur SQL d’OGR]], en passant la chaine “OGRSQL” à la méthode ExecuteSQL(), en tant que nom du dialecte SQL.
Le pilote MySQL ne gère pas la création de nouveaux jeu de données (une base de données dans MySQL), mais il permet la création de nouvelles couches dans une base existante.
Par défaut, le pilote MySQL tentera de préserver la précision des géométries OGR lors de la création et la lecture des couches MySQL. Pour les champs d’entier avec une longueur définie, il utilisera DECIMAL comme type de champ MySQL avec une précision définie de 0. Pour les champs de type réel, il utilisera DOUBLE de largeur et précision définie. Pour les champs caractères avec une largeur définie, VARCHAR sera utilisé.
Le pilote MySQL n’essaye pas de comprendre l’encodage des caractères pour le moment.
Le pilote MySQL n’est pas transactionnel pour le moment.
L’exemple suivant du nom de la source de données ouvre le schéma westholland de la base de données dont le mot de passe est psv9570 pour l’utilisateur root sur le port 3306. Aucune nom d’hôte n’est fournit, donc localhost est utilisé. La directive table= est scanné et présenté comme la couche à utiliser.
MYSQL:westholland,user=root,password=psv9570,port=3306,tables=bedrijven
L’exemple suivant utilise ogr2ogr pour créer une copie de la couche des frontières mondiales à partir d’une shapefile dans une table MySQL. Il écrase la table borders2 existante, définie une option lors de la création pour définir le nom de la colonne géométrique SHAPE2.
ogr2ogr -f MySQL MySQL:test,user=root world_borders.shp -nln borders2 -update -overwrite -lco GEOMETRY_NAME=SHAPE2
L’exemple suivant utilise ogrinfo pour renvoyer des informations synthétique sur la couche borders2 dans la base de données test :
ogrinfo MySQL:test,user=root borders2 -so
Layer name: borders2
Geometry: Polygon
Feature Count: 3784
Extent: (-180.000000, -90.000000) - (180.000000, 83.623596)
Layer SRS WKT:
GEOGCS["GCS_WGS_1984",
DATUM["WGS_1984",
SPHEROID["WGS_84",6378137,298.257223563]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]]
FID Column = OGR_FID
Geometry Column = SHAPE2
cat: Real (0.0)
fips_cntry: String (80.0)
cntry_name: String (80.0)
area: Real (15.2)
pop_cntry: Real (15.2)