我有一个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)'))
没有任何问题。然而,对于大量插入物来说这是非常低效的。有谁知道为什么批量加载会引发错误?
感谢, 杰夫
答案 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);