Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je importer un geoDataFrame dans MySQL ?

Après avoir essayé beaucoup de choses, j'ai remarqué que la fonction to_sql ne générait pas la syntaxe MySQL correcte pour que cela fonctionne. De plus, avec l'approche pour passer à wkb, MySQL n'a toujours pas reconnu cette colonne comme géométrie si je laisse le texte tel quel (voir l'image dans la question).

Ce qui a fonctionné pour moi a été de changer le champ de géométrie en chaîne et de le mettre à jour en python pour qu'il ressemble à ceci :

Après cela, j'ai continué à utiliser le code ci-dessous, où j'envoie la trame de données à MySQL, puis j'ai mis à jour la table pour définir la colonne de géométrie :

regions.to_sql('pr_regions', con=conn, schema='eq_pr_db',
               if_exists='replace', index=False)

#add column type Polygon

conn.execute('''ALTER TABLE `eq_pr_db`.`pr_regions` 
                ADD COLUMN `geom` Polygon;''')

#populate new column by applying the ST_GeomFromText function to transform the string to geometry type.

conn.execute('''UPDATE `eq_pr_db`.`pr_regions`
                SET geom =  ST_GeomFromText(geometry) ;''')