You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含特殊WKT字段的CSV通过LOAD DATA INFILE导入MariaDB

MariaDB 含特殊字段CSV导入解决方案

1. 提前创建匹配的目标表

根据你提供的字段结构建表,字段类型可根据实际业务调整,示例如下:

CREATE TABLE land_records (
    wkt TEXT NOT NULL, -- 后续需要做空间查询的话可替换为GEOMETRY类型
    id INT UNSIGNED NOT NULL PRIMARY KEY,
    title_no VARCHAR(50) NOT NULL,
    status VARCHAR(20) NOT NULL,
    type VARCHAR(50) NOT NULL,
    land_district VARCHAR(50) NOT NULL,
    issue_date DATETIME NOT NULL,
    guarantee_status VARCHAR(20) NOT NULL,
    estate_description TEXT NOT NULL,
    owners VARCHAR(255) NOT NULL,
    spatial_extents_shared CHAR(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. 使用正确参数的LOAD DATA INFILE语句

你之前导入失败的核心原因是没有正确指定字段包裹符,导致字段内部的逗号被误识别为字段分隔符。你提到的用WKT括号做分隔符的方案不建议使用,标准CSV格式本身支持用双引号包裹包含分隔符的字段,只要配置正确的解析参数即可完美适配你提供的CSV格式,不需要额外自定义规则。
导入语句示例:

LOAD DATA INFILE '/你的CSV文件绝对路径/xxx.csv'
INTO TABLE land_records
CHARACTER SET utf8mb4 -- 编码要和你CSV文件的实际编码保持一致
FIELDS 
    TERMINATED BY ',' 
    ENCLOSED BY '"' -- 核心配置:指定字段被双引号包裹,内部的逗号不会被当成分隔符
    ESCAPED BY '' -- 如果你CSV里的转义规则是双写双引号就保留这个配置,否则可以替换为ESCAPED BY '\\'
LINES 
    TERMINATED BY '\n' --  Windows系统生成的CSV换行符是\r\n的话,这里改成'\r\n'
IGNORE 1 LINES; -- 如果CSV第一行是表头就保留这行,没有表头直接删除即可

如果遇到文件权限相关报错,可以把语句开头换成LOAD DATA LOCAL INFILE,同时提前执行SET GLOBAL local_infile = 1;开启本地文件导入权限。

3. 可选后续处理

如果导入后WKT字段有多余的外层括号,可执行批量更新清理:

-- 按需调整裁剪规则,比如去掉最外层的所有括号
UPDATE land_records SET wkt = TRIM(BOTH '()' FROM wkt);
-- 需要做空间查询的话可把TEXT类型转为空间类型
ALTER TABLE land_records MODIFY COLUMN wkt GEOMETRY NOT NULL SRID 4326;

内容的提问来源于stack exchange,提问作者mikeldub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:36:03