导出WKT需勾选As spatial type (WKT)并用SQL格式,确保phpMyAdmin≥5.2.0、MySQL≥5.7.6以保留SRID;大表导出应设Max rows为0、选Direct模式;导入前须检查括号匹配、不可见字符及坐标精度。
导出时选错格式会导致WKT变成乱码或NULL
phpmyadmin 默认导出空间字段是二进制(geometry 类型的 raw blob),直接选 sql 或 csv 格式,point、polygon 等值会变成不可读的十六进制串,甚至显示为 null。必须显式要求以文本形式展开空间数据。
- 导出前,在「自定义导出」页勾选
As spatial type (WKT)—— 这个选项在「格式-specific 选项」折叠区里,容易被忽略 - 务必选择
SQL格式导出(CSV和JSON对 WKT 支持不一致,尤其多层嵌套POLYGON易截断) - 如果表里混有
POINT和GEOMETRYCOLLECTION,导出后检查首几行:正常应看到类似ST_GeomFromText('POINT(120.1 30.2)', 4326),而不是0x00000000014059333333333333403E666666666666
导出含SRID的WKT必须确认phpMyAdmin版本 ≥ 5.2.0
旧版 phpMyAdmin(如 4.x 或 5.0.x)导出 As spatial type (WKT) 时会丢掉 SRID,生成的 ST_GeomFromText('...', 0),导致GIS系统无法识别坐标系。这是底层 MySQL 函数调用逻辑缺陷,不是配置问题。
- 执行
SELECT VERSION();确认 MySQL ≥ 5.7.6(支持显式 SRID)且 phpMyAdmin ≥ 5.2.0 - 若版本不够,临时方案:导出后用脚本批量替换,例如把
ST_GeomFromText('替换为ST_GeomFromText('+ 坐标系字符串,但需确保所有几何字段统一用同一 SRID - 注意:MySQL 8.0+ 的
ST_AsWKT(col, 1)第二参数控制是否带 SRID,但 phpMyAdmin 不暴露该参数,只能依赖其内部实现
导出大表时WKT字符超长被截断
phpMyAdmin 默认对单字段内容做长度限制(尤其在「浏览」页预览时),导出过程也可能因 PHP memory_limit 或 max_execution_time 中断,表现为导出 SQL 文件末尾突然截断,最后几行缺失 INSERT 语句。
- 在导出页勾选
Disable foreign key checks和Use hexadecimal for binary fields(后者可减少体积,但对 WKT 无影响) - 关键设置:在「格式-specific 选项」中,把
Max rows to export改为0(不限制),并确认Export method是Direct而非Quick - 如果仍失败,改用命令行:登录服务器后运行
mysqldump --hex-blob=FALSE --skip-extended-insert -u user -p db table --where="1=1",再手动在 SQL 里把0x...替换为ST_GeomFromText(...)(需提前查好字段类型和 SRID)
导入回 MySQL 时 ST_GeomFromText 报错 ERROR 3037
导出的 WKT 字符串本身合法,但导入时报错 Illegal non geometric value was found when trying to parse a geometry,常见于括号不匹配、空格/换行符混入、或坐标精度超出 MySQL 限制(如小数位 > 10 位)。
- 用文本编辑器打开导出文件,搜索
ST_GeomFromText,检查紧邻的单引号内是否含未转义的换行、多余空格或中文逗号 - MySQL 对 WKT 坐标精度敏感:避免导出时用
DOUBLE原始值直接拼接,建议先导出为DECIMAL(12,10)再转 WKT - 若原数据含
EMPTY几何(如POLYGON EMPTY),部分 MySQL 版本不支持,需替换为ST_GeomFromText('POINT EMPTY', 4326)或先过滤掉
POINT,肉眼核对导出内容是否和 SELECT 结果一致。



















