我理解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/