Я добавил новый столбец в таблицу и обновил данные для существующих записей, если имя существует с использованием 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