gpt4 book ai didi

mysql - 加载数据 INFILE 和 LINESTRING

转载 作者:行者123 更新时间:2023-11-29 05:18:43 25 4
gpt4 key购买 nike

我想导入包含以下列的大型 CSV 文件

SegmentId;Lengthmm;RoadClass;OptimalSpeedKph;SpeedLimitKph;WKT
1;7329;1;120;70;LINESTRING (28.97845 41.067332,28.978537 41.067332)
...

我正在使用 LOAD DATA INFILE。问题是 WKT 是 LINESTRING。实际上,如果我使用以下查询添加一个条目:

INSERT INTO FCD 
VALUES (3,1,1,1,1,LineStringFromText( 'LINESTRING (28.947971 41.050192,28.94754 41.049887)'));

它被插入到表中。

但是我不知道在 LOAD DATA INFILE 命令中访问 WKT 参数并转换它。

LOAD DATA LOCAL INFILE '/home/username/userfile.csv' 
INTO TABLE `FCD`
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES

它给我以下错误:

ERROR 1416 (22003): Cannot get geometry object from data you send to the GEOMETRY field

问候

最佳答案

您可以使用变量从 WKT 列加载值并使用 LOAD DATA INFILESET 子句在表达式中使用变量的值并将其分配给列的语句:

LOAD DATA LOCAL INFILE '/home/username/userfile.csv'
INTO TABLE `FCD`
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(SegmentId, Lengthmm, RoadClass, OptimalSpeedKph, SpeedLimitKph, @WKT)
SET WKT = LineStringFromText(@WKT)

我假定 CSV 文件的第一行包含表格列的名称。注意列表中的最后一个字段是 @WKT,它是一个变量,然后 SET 子句将变量 @WKT 的值用于表达式然后将其分配给 WKT 列。

关于mysql - 加载数据 INFILE 和 LINESTRING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com