gpt4 book ai didi

几何字段的MySQL批量插入

转载 作者:行者123 更新时间:2023-11-29 01:47:16 24 4
gpt4 key购买 nike

我有一个 mysql 数据库,我试图从一个文本文件中填充它。我的文件的内容看起来像(作为一些示例。有数千行)

1:GeomFromText('Polygon(0 0, 1 1, 2 2, 0 0)')
2:GeomFromText('Polygon(0 0, 1 2, 2 2, 0 0)')

在我的模式中,第一个字段是一个整数,第二个是 GEOMETRY

我尝试加载数据

LOAD DATA LOCAL INFILE 'myfile.txt' INTO TABLE `testDb`.`testTable` FIELDS TERMINATED BY ':' LINES TERMINATED BY '\n'

我得到了错误

Error Code 1416 Cannot get geometry object from data you send to the GEOMETRY field

如果我尝试像这样进行单独插入:

INSERT INTO TABLE testTable(id,region) VALUES (1,GeomFromText('Polygon(0 0, 1 1, 2 2, 0 0)'))

它没有问题。这对于大量插入来说是非常低效的。有谁知道为什么批量加载会抛出该错误?

谢谢,杰夫

最佳答案

批量插入不计算 sql 语句,它只是将值放入数据库中。这意味着 GeomFromText('Polygon(0 0, 1 1, 2 2, 0 0)') 被解释为只是一个字符串值,它不是几何对象,因此不能插入到几何列。

您需要设置一个函数以在每一行插入时调用,如下所示,其中强调文本 obj_idobj_geo 是列名称:

LOAD DATA INFILE 'c:\myFile.txt'
INTO TABLE `tbl_myTable`
(@var1, @var2)
SET
obj_id = @var1,
obj_geo = GeomFromText(@var2);

关于几何字段的MySQL批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3760968/

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