Liquibase识别到CSV文件却报文件不存在异常求助
解决Liquibase导入CSV时误将字段内容识别为文件路径的问题
问题根源
Liquibase错误把CSV里search_terms字段的内容当成文件路径查找,本质是CSV解析异常导致的——你的search_terms包含空格、非ASCII匈牙利语字符,可能还有逗号这类分隔符,且未正确用引号包裹,再加上编码不匹配,导致Liquibase解析字段时错乱,把字段内容误判为文件路径。
具体修复步骤
修正CSV格式,用引号包裹特殊字段
所有包含空格、非ASCII字符、逗号的字段值,必须用双引号"包裹。比如你的CSV应该改成:id,category_id,name,search_terms 1,1,"会计服务","számlakezelés Könyvelő Könyvelő szolgáltatás Könyvelői szolgáltatások Professzionális könyvelő Vállalkozás könyvelése Adótanácsadás Pénzügyi szakember Üzleti könyvelés Könyvelési tanácsadás Könyvelői szolgáltatások CECCAR SAGA PFA könyvelés SRL könyvelés TVA"指定CSV编码
因为包含非ASCII字符,在loadData标签里显式指定UTF-8编码,避免解析乱码:<changeSet id="Load data from CSV file Service" author="apal" > <loadData tableName="service" file="liquibase/data/services.csv" encoding="UTF-8"> <column name="id" header="id" /> <column name="fk_category_id" header="category_id"/> <column name="name" header="name" /> <column name="search_terms" header="search_terms" /> </loadData> </changeSet>显式启用引用值解析
部分Liquibase版本对引号包裹的字段识别不灵敏,加上quotedValue="true"确保解析正确:<loadData tableName="service" file="liquibase/data/services.csv" encoding="UTF-8" quotedValue="true"> <!-- 列配置 --> </loadData>统一CSV行尾格式
用文本编辑器(比如Notepad++)把CSV的行尾格式改成LF(Unix格式),避免跨平台解析时出现行识别错误。
验证
修改后先打开CSV确认格式无误,再执行Liquibase迁移,即可解决该异常。
内容的提问来源于stack exchange,提问作者Andor Pál
相关产品推荐
相关产品推荐

