MySQL批量插入几何字段

时间:2010-09-21 13:50:43

标签: mysql geometry bulkinsert

我有一个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)'))

没有任何问题。然而,对于大量插入物来说这是非常低效的。有谁知道为什么批量加载会引发错误?

感谢, 杰夫

1 个答案:

答案 0 :(得分:4)

批量插入不会评估sql语句,它只是将值放入db。这意味着 GeomFromText('Polygon(0 0,1 1 2,2 2 0)')被解释为一个字符串值,它不是Geometry对象,因此无法插入几何列。

您需要设置要在每个行插入上调用的函数,如下所示强调文本 obj_id obj_geo 是列名:

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