Как обновить записи, используя liquibase loadUpdateData и файл csv - PullRequest
0 голосов
/ 10 января 2020

Я добавил новый столбец в таблицу и обновил данные для существующих записей, если имя существует с использованием liquibase loadUpdateData. Ниже приведен фрагмент, который я пытался обновить, но, похоже, он не работает. Может кто-нибудь помочь мне, что я делаю неправильно.

<changeSet author="user_name" id="1" objectQuotingStrategy="QUOTE_ALL_OBJECTS">
        <addColumn tableName="table_name">
            <column name="last_name" type="VARCHAR2(20 CHAR)"/>
        </addColumn>
    </changeSet>
    <changeSet author="user_name" id="2" objectQuotingStrategy="QUOTE_ALL_OBJECTS">
        <loadUpdateData  encoding="UTF-8"
                  tableName="table_name"
                         primaryKey="ID"
                         onlyUpdate="true"
                  file="../data/update_user.csv"
                  relativeToChangelogFile="true"
                  quotchar='"'
                  separator=','>
            <column name="ID" type="NUMERIC"/>
            <column name="NAME" type="STRING"/>
            <column name="LAST_NAME" type="STRING"/>
        </loadUpdateData >
    </changeSet>

Перед добавлением столбца:

ID NAME
1  aaa
2  bbb
3  ccc
4  ddd

После добавления нового столбца и добавления данных в CSV-файл: ожидаемый вывод

ID NAME LAST_NAME
1  aaa  zzz
2  bbb  yyy
3  ccc  qqq
4  ddd  www

Но это не обновление, я получаю

ID NAME LAST_NAME
1  aaa  null
2  bbb  null
3  ccc  null
4  ddd  null

файл update_user.csv

ID,NAME,LAST_NAME
1,aaa,zzz
2,bbb,yyy
3,ccc,qqq
4,ddd,www

Я сделал что-то неправильно? Я хочу только обновить и игнорировать вставку, если запись не найдена. Если идентификатор или имя существует, он должен обновить эту строку со значением last_name, указанным в файле csv. Я использую жидкость в версии 3.6.1

...