Liquibase CSV loadData 失败,带引号的字符串包含逗号
Posted
技术标签:
【中文标题】Liquibase CSV loadData 失败,带引号的字符串包含逗号【英文标题】:Liquibase CSV loadData fails with quoted string containing a comma 【发布时间】:2020-06-09 02:09:10 【问题描述】:我正在尝试使用 Liquibase 更改日志集将 CSV 文件加载到 SQLserver 表中。 当将 XLSX 文件保存为 CSV 文件时,包含逗号的列保存在双引号中(请参见下面的第三个值),按照标准,这很好,但 liquibase 忽略双引号并考虑双引号内的逗号。
13,OV,糖尿病门诊自我管理培训服务个体,每30分钟”,77.82,1,0,1/4/2016,,G0108
来自命令行终端的错误消息:
CSV 文件 v2.1/r21/TestData20212021.csv 第 21 行定义了 10 个值,标题有 9 个。数字必须相等(检查带有嵌入逗号的未引用字符串)
<changeSet author="sprint-developer" id="sprint1-09">
<loadData
file="v2.1/r21/TestData2021.csv"
tableName = "tbl_Votes" encoding="UTF-8" >
<column header="VcenarioID" name="VcenarioID" type="numeric"/>
<column header="venefitCode" name="venefitCode" type="string"/>
<column header="KostDescription" name="KostDescription" type="string"/>
<column header="Kost" name="Kost" type="NUMERIC"/>
<column header="OcKurrences" name="OKcurrences" type="numeric"/>
<column header="KostIsPerIncident" name="KostIsPerIncident" type="boolean"/>
<column header="KostDate" name="KostDate" type="date"/>
<column header="VundleId" name="VundleId" type="NUMERIC"/>
<column header="VillingCode" name="VillingCode" type="string"/>
</loadData>
<rollback>Delete from tbl_Votes where VcenarioID=13 </rollback>
</changeSet>
【问题讨论】:
【参考方案1】:尝试将quotchar='"'
添加到您的变更集中。这应该告诉 liqbuiase 将 ""
中的所有内容视为一个值。
查看loadData 文档。
所以你的 changeSet 可能如下所示:
<changeSet author="sprint-developer" id="sprint1-09">
<loadData
file="v2.1/r21/TestData2021.csv"
tableName = "tbl_Votes" encoding="UTF-8" quotchar='"'>
<column header="VcenarioID" name="VcenarioID" type="numeric"/>
<column header="venefitCode" name="venefitCode" type="string"/>
<column header="KostDescription" name="KostDescription" type="string"/>
<column header="Kost" name="Kost" type="NUMERIC"/>
<column header="OcKurrences" name="OKcurrences" type="numeric"/>
<column header="KostIsPerIncident" name="KostIsPerIncident" type="boolean"/>
<column header="KostDate" name="KostDate" type="date"/>
<column header="VundleId" name="VundleId" type="NUMERIC"/>
<column header="VillingCode" name="VillingCode" type="string"/>
</loadData>
<rollback>Delete from tbl_Votes where VcenarioID=13 </rollback>
</changeSet>
【讨论】:
属性“quotchar”不允许出现在元素“loadData”中。 您使用什么版本的 liquibase 和 liquibase xsd 架构?它应该从 liquibase 3.5.0 开始工作 您好 htshame,感谢您的回复,我的版本是 3.6.3。 是什么给你一个错误Attribute 'quotchar' is not allowed to appear in element 'loadData'.
?
看看loadData
docs:liquibase.org/documentation/changes/load_data.html以上是关于Liquibase CSV loadData 失败,带引号的字符串包含逗号的主要内容,如果未能解决你的问题,请参考以下文章
如何使 liquibase 的 LoadData 标签不区分大小写?