mysql - MySQL 中的几何

标签 mysql geometry

我理解MySQL中的POINT()是什么,但我就是不明白这种格式的含义是什么 1 POINT (8.04665153 -44.39902520) 我有以下 CSV

104|104||CURR|N|14102|4428||71816|71816|1|1点(8.04665153 -44.39902520)|

我正在使用以下查询将 CSV 加载到我的表中

LOAD DATA LOCAL INFILE '/data/disc/sad1.csv' INTO TABLE sad1 
FIELDS TERMINATED BY '|' ENCLOSED BY '"' lines terminated by '\n' IGNORE 23 LINES
(@var1, @var2,@var3,@var4,@var5,@var6,@var7,@var8,@var9,@var10,@var11,@var12)
SET `house_number` = @var1,
    `range_low` = @var2,
    `range_high` = @var3,
    `status` = @var4,
    `unofficial_flag` = @var5,
    `rcl_id` = @var6,
    `rna_id` = @var7,
    `alt_id` = @var8,
    `se_row_id` = @var9,
    `id` = @var10,
    `audit_id` = @var11,
    `shape` = GeomFromText(@var12);

我在 shape 字段中得到 NULL。当我将 1 POINT (8.04665153 -44.39902520) 更改为 POINT (8.04665153 -44.39902520) 时,我正在填写一些数据。我应该如何处理前缀 1 在上面的数据中?

最佳答案

我不确定输入数据中的前缀 1 表示什么。众所周知的几何文本表示,如 SFA part 1 standard 第 7 节中所定义。 ,不包含这样的前缀。这个数字可能表示特征的数量。或者它可能表示点类型的整数代码,如该标准第 8.2.3 节的表 7 中所指定。

无论如何,只要在所有情况下前缀均为 1,并且输入 csv 数据的创建者未提供有关该值含义的其他详细信息,您最好的选择是只需删除这些前缀即可。您可以在 CSV 上使用预处理阶段来执行此操作,在整个文档中用 POINT 替换 1 POINT。您极有可能会意外地替换文本列中某处的某个事件。

如果您想安全起见,或者想避免额外的步骤,您还可以在 SQL 查询中进行更改,使用如下表达式:

`shape` = GeomFromText(IF(@var12 LIKE '1 POINT%', SUBSTRING(@var12, 3), @var12))

这将检查相应的列是否以 1 POINT 开头,如果是,则省略列文本中的前两个字符。

关于mysql - MySQL 中的几何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261472/

相关文章:

mysql - 批处理文件执行的.sql文本文件中mysql的if语句

mysql - 为什么 mysql 备份没有恢复到我的 docker 容器中?

php - Zend 框架 : Proper way to interact with database?

sql - SQL Server 中的地理数据类型与几何数据类型

algorithm - 如何对没有随机内点的多边形进行三角剖分?

php - 无法使用 PHP 解码电子邮件地址

mysql - 对行进行分组但保留值不为空

c# - 如何确定 GDI+ 中两条线的交点?

algorithm - 确定一个点是否位于任意形状内?

java - 如何停止 "painting"?