Liquibase CSV loadData завершается с кавычкой, содержащей запятую - PullRequest
1 голос
/ 25 февраля 2020

Я пытаюсь загрузить файл CSV в таблицу SQLserver, используя набор журналов изменений Liquibase. Когда XLSX-файл сохраняется в виде CSV-файла, столбец с запятой сохраняется в двойных кавычках (см. 3-е значение ниже), это нормально для стандартов, но liquibase игнорирует двойные кавычки и учитывает запятую внутри двойных кавычек.

13, О.В., "Индивидуальные тренинги по лечению диабета амбулаторно, за 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 Ответ

0 голосов
/ 25 февраля 2020

Попробуйте добавить quotchar='"' в набор изменений. Это должно сказать liqbuiase обрабатывать все внутри "" как одно единственное значение.

Извлечь loadData docs.

Таким образом, ваш набор изменений может выглядеть следующим образом:

<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>
...