如何将 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 中的点数据类型列的主要内容,如果未能解决你的问题,请参考以下文章
For 循环将带有纬度和经度的 .csv 文件与 Dataclass 进行比较