【问题标题】:LOAD DATA INFILE and spatial dataLOAD DATA INFILE 和空间数据
【发布时间】:2019-01-11 10:07:57
【问题描述】:

在 MySQL 5.7 上,我曾经使用 LOAD DATA INFILESET 子句填充表的“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 子句的方式是否发生了变化? 谢谢!

【问题讨论】:

    标签: mysql spatial


    【解决方案1】:

    此错误已在 8.0.12 中为 confirmed。 我发现的唯一解决方法是:

    1. 删除 geom 列
    2. 将数据加载到 (x, y) 列中
    3. 重新创建没有非空约束的 geom 列
    4. 更新几何列
    5. 更改列以添加非空约束

    【讨论】:

      【解决方案2】:

      简单的方法是创建没有空间(点/地理)字段的表并将数据加载为文本,然后将数据从这个(临时)表加载到目标表,如下所示:

      1. 使用简单的列类型将数据加载到临时表
      2. 从将所需列转换为空间列的临时表插入到目标表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-02
        • 1970-01-01
        • 1970-01-01
        • 2019-07-14
        • 2015-04-17
        • 2019-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多