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

将平面文件导入MariaDB时遇1064语法错误,求排查解决

MariaDB LOAD DATA 1064语法错误排查与解决

问题场景

两段结构相似的LOAD DATA导入平面文件代码,一段可正常运行,另一段触发1064语法错误。

正常运行的代码片段

SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';
LOAD DATA LOCAL INFILE 
'E:\\MM012224.txt'
INTO TABLE `denton24`.`mm012224`
(@row)
SET Account_Number = TRIM(SUBSTR(@ROW,1,30)),
SPTB_Code = TRIM(SUBSTR(@ROW,31,3)),

触发语法错误的代码片段

SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';
LOAD DATA LOCAL INFILE 
'E:\\tax_roll.txt'
INTO TABLE `dallas24`.`tax_roll`
(@row)
SET ACCOUNT = TRIM(SUBSTR(@ROW,1,34)),
SET YEAR = TRIM(SUBSTR(@ROW,35,4)),
SET JURISDICTION = TRIM(SUBSTR(@ROW,39,4)),

问题原因

报错的核心是违反了LOAD DATA语句的语法规范:在SET子句中,仅需在开头声明一次SET,后续多个字段的赋值操作直接用逗号分隔即可,不需要为每个字段单独添加SET关键字。

第一段代码仅在开头使用了一次SET,符合语法要求;第二段代码为每个字段都重复添加了SET,这是导致1064语法错误的直接原因。

解决方法

修改报错代码,移除后续字段前的SET关键字,同时建议在最后一个字段赋值末尾添加分号以确保语句完整:

SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';
LOAD DATA LOCAL INFILE 
'E:\\tax_roll.txt'
INTO TABLE `dallas24`.`tax_roll`
(@row)
SET ACCOUNT = TRIM(SUBSTR(@ROW,1,34)),
YEAR = TRIM(SUBSTR(@ROW,35,4)),
JURISDICTION = TRIM(SUBSTR(@ROW,39,4));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:03:24