Liquibase - обрезать пробелы из CSV - PullRequest
1 голос
/ 15 апреля 2019

У меня есть отформатированный файл CSV для <loadData .../> из Liquibase . Есть несколько пробелов для приятного взгляда. Но из-за этих пробелов у меня неправильные данные в моей БД.

Как это решить? Есть ли какой-нибудь «флаг» или что-то, что заставляет Liquibase обрезать пробелы?

Я пытался сделать его похожим на следующий

id;name   ;surname
1 ;test123;test123
2 ;test1  ;test123
3 ;"test" ;test123

В любом случае, моя БД также содержит test1__ и test"_, где _ - это пробел.

Также quotchar="&quot;" не помогло (и ожидалось, это избыточная линия).

Кстати, столбец идентификатора, который определен как числовой - нормально (1,2,3 и т. Д. Без ошибок).

1 Ответ

1 голос
/ 15 апреля 2019

Проверьте это Jira выпуск .

Цитировать Натана Воксланда:

Возможно, имеет смысл оставить значение по умолчанию как обрезку, так как я думаю, это вызовет меньше сюрпризов. Тем не менее, я добавил глобальный флаг конфигурации, позволяющий изменить значение по умолчанию.

Вы можете установить его либо через liquibase.trimCsvWhitespace = false системное свойство или с помощью LiquibaseConfiguration.getInstance (). GetProperty (GlobalConfiguration.class, GlobalConfiguration.CSV_TRIM_WHITESPACE) .setValue () вызов API.

Попробуйте добавить liquibase.trimCsvWhitespace=false свойство.

При дальнейшем рассмотрении похоже, что это было изменение только в 3.5.0. я обычно стараются поддерживать обратную совместимость, даже если она неожиданное поведение, но думал, что оно изменилось с 3.4.0 и так изменение его обратно на сохранение пробела может сломать других людей которые теперь ожидают его обрезки.

Однако, поскольку он неожиданно изменился только в 3.5.0, он определенно ошибка, и поэтому я просто устанавливаю логику для сохранения пробельные.

В билете Jira эта ошибка была исправлена ​​в версии 3.5.1, но похоже, что на самом деле это не так.

...