MySQL执行LOAD XML导入XML数据时lessonName字段为空问题
问题原因
MySQL的LOAD XML默认的隐式标签-列名匹配逻辑存在偶发的驼峰命名映射失效问题,你场景中unitName可以正常匹配但lessonName匹配失败就属于这类情况,该问题和XML结构、XSD约束无关。
解决方法
你不需要修改XML或者表结构,只要修改导入语句,显式指定标签和列的映射关系即可,两种可用的写法如下:
写法1:直接指定字段顺序
按XML中标签的顺序列出表的对应字段,强制匹配逻辑按名称对应:
LOAD XML INFILE 'Unit1_introToHTML.xml' INTO TABLE LESSON ROWS IDENTIFIED BY '<row>' (courseID, unitNumber, unitName, lessonName, textBody);
写法2:变量显式赋值(兼容性更强)
如果第一种写法仍不生效,可以用用户变量绑定标签值再赋值给表字段,完全绕开隐式匹配逻辑:
LOAD XML INFILE 'Unit1_introToHTML.xml' INTO TABLE LESSON ROWS IDENTIFIED BY '<row>' (@courseID, @unitNumber, @unitName, @lessonName, @textBody) SET courseID = @courseID, unitNumber = @unitNumber, unitName = @unitName, lessonName = @lessonName, textBody = @textBody;
执行修改后的导入语句即可正常读取lessonName字段的内容。
内容的提问来源于stack exchange,提问作者RazelofHyrulez
相关产品推荐
相关产品推荐

