0

我明白里面有什么POINT()MySQL但我只是不知道这种格式是什么意味着 1 POINT (8.04665153 -44.39902520)我有以下内容CSV

104|104||CURR|N|14102|4428||71816|71816|1|1 POINT (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);

我正在NULL为这个shape领域。当我更改为时1 POINT (8.04665153 -44.39902520)POINT (8.04665153 -44.39902520)我正在填写一些数据。我应该如何处理1上述数据中的前缀?

4

1 回答 1

1

我不确定1ypur 输入数据中的这个前缀是什么意思。SFA 第 1 部分标准第 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,如果是,则省略列文本中的前两个字符。

于 2012-11-11T09:05:18.803 回答