LOAD DATA INFILE 和空间数据
LOAD DATA INFILE and spatial data
在 MySQL 5.7 上,我曾经用 LOAD DATA INFILE
和 SET
子句填充 table 的 "point" 列,即
LOAD DATA INFILE 'myfile.txt'
REPLACE INTO TABLE mytable
(@x, @y)
SET geom = Point(@x, @y);
这工作得很好。
我升级到 MySQL 8.0.12,现在出现错误 ERROR 1364 (HY000): Field 'geom' doesn't have a default value
。
LOAD DATA INFILE
处理 SET
子句的方式有什么变化吗?
谢谢!
此错误已在 8.0.12 中 confirmed。
我找到的唯一解决方法是:
- 删除 geom 列
- 将数据加载到 (x, y) 列
- 重新创建没有非空约束的 geom 列
- 更新 geom 列
- 更改列以添加非空约束
简单的方法是创建没有空间(point/geo)字段的table并将数据加载为文本,接下来从这个(临时)table加载数据到目标table 如下所示:
- 使用简单的列类型将数据加载到临时 table
- 从临时 table 插入目标 table 将所需列转换为空间列。
在 MySQL 5.7 上,我曾经用 LOAD DATA INFILE
和 SET
子句填充 table 的 "point" 列,即
LOAD DATA INFILE 'myfile.txt'
REPLACE INTO TABLE mytable
(@x, @y)
SET geom = Point(@x, @y);
这工作得很好。
我升级到 MySQL 8.0.12,现在出现错误 ERROR 1364 (HY000): Field 'geom' doesn't have a default value
。
LOAD DATA INFILE
处理 SET
子句的方式有什么变化吗?
谢谢!
此错误已在 8.0.12 中 confirmed。 我找到的唯一解决方法是:
- 删除 geom 列
- 将数据加载到 (x, y) 列
- 重新创建没有非空约束的 geom 列
- 更新 geom 列
- 更改列以添加非空约束
简单的方法是创建没有空间(point/geo)字段的table并将数据加载为文本,接下来从这个(临时)table加载数据到目标table 如下所示:
- 使用简单的列类型将数据加载到临时 table
- 从临时 table 插入目标 table 将所需列转换为空间列。