Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso importar um geoDataFrame para o MySQL?


Depois de tentar muitas coisas, notei que a função to_sql não estava gerando a sintaxe correta do MySQL para funcionar. Também com a abordagem de mudar para wkb o MySQL ainda não reconhecia essa coluna como geometria se eu deixar o texto como está (veja foto na pergunta).

O que funcionou para mim foi alterar o campo de geometria para string e atualizá-lo em python para que ficasse assim:

Depois disso, passei a usar o código abaixo, onde envio o dataframe para o MySQL e depois atualizo a tabela para definir a coluna geometry:
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) ;''')