如何将 csv 中的纬度和经度数据导入 MySQL 中的点数据类型列

Posted

技术标签:

【中文标题】如何将 csv 中的纬度和经度数据导入 MySQL 中的点数据类型列【英文标题】:How to import latitude and longitude data from a csv into a point data type column in MySQL 【发布时间】:2021-05-27 18:00:52 【问题描述】:

我正在尝试将位置数据从 SQL Server 迁移到 mysql。为此,我使用 c# 以下列格式将位置数据导出到 CSV 文件

5;1442891783;POINT(43.7070275,-79.3972633);2;351;0;1442891785
5;1442891846;POINT(43.7071198,-79.3972495);2;353;0;1442891848

当我尝试在 MySQL 中导入 CSV 文件时,出现以下错误

无法从您发送到 GEOMETRY 字段的数据中获取几何对象

我无法更改 MySQL 架构,因为其他客户端正在使用此架构。

这是架构的一部分

  `col1` int(11) NOT NULL,
  `col2` int(10) unsigned NOT NULL,
  `location` point NOT NULL,
  `col3` float NOT NULL,
  `col4` float NOT NULL,
  `col5` float NOT NULL,
  `col6` int(10) unsigned NOT NULL,
  PRIMARY KEY (`col1`,`col2`),
  SPATIAL KEY `location` (`location`),
  KEY `col2` (`col2`)

我是一名 MS SQL 人,对 MySQL 了解不多。

感谢任何帮助

【问题讨论】:

【参考方案1】:

使用Input Preprocessing。类似的东西

LOAD DATA INFILE 'filename.ext'
INTO TABLE tablename
COLUMNS TERMINATED BY ';'
( col1,
  col2,
  @location,
  col3,
  col4,
  col5,
  col6 )
SET location = ST_GeometryFromText(@location)

【讨论】:

以上是关于如何将 csv 中的纬度和经度数据导入 MySQL 中的点数据类型列的主要内容,如果未能解决你的问题,请参考以下文章

mysql phpmyadmin 导入 csv 禁用舍入

For 循环将带有纬度和经度的 .csv 文件与 Dataclass 进行比较

怎么将外部获取的经纬度添加到tableau中

如何将EXCEL表中的经纬度导入GOOGLE地球里面去.EXCEL表中包括了名称。

如何从经度和纬度中筛选国家?

如何正确地将纬度和经度坐标插入 mySQL 浮点数?