2015-05-18 5 views
1

У меня есть две базы данных: одна для DB2 и одна для ORACLE. Я создал файл журнала изменений с помощью команды generateChangeLog. Это дало мне правильный xml-файл, но только в базе данных Oracle. Я вызывал эту команду в базе данных оракула, и в результате я получил данные типа столбцов, такие как NUMBER (*, 0), которые недопустимы для DB2. Как я могу генерироватьChangeLog с унифицированными типами данных в ликбазе?Типы данных столбцов Liquibase из generateChangeLog

Существует ли какой-либо список типов данных в липибазе? Что, скажем, versitale для всех баз данных?

ответ

3

Обратное проектирование существующей схемы БД к XML-файлу Liquibase всегда создает конкретные типы данных СУБД. Вам нужно будет отредактировать созданный XML-файл, чтобы использовать типы JDBC.

поддерживаемых типов «кросс-платформенных» описаны в руководстве:

http://www.liquibase.org/documentation/column.html

Чтобы сделать скрипты независимым от базы данных, следующие «общие» типы данных будут преобразованы в правильном реализация базы данных:

  • БУЛЕВЫ
  • ВАЛЮТА
  • UUID
  • CLOB
  • BLOB
  • ДАТА
  • DATETIME
  • ВРЕМЯ
  • BIGINT

Кроме того, указываемый java.sql.Types. * Тип будет преобразован в правильный тип. При необходимости можно включить точность. Вот некоторые примеры:

  • java.sql.Types.TIMESTAMP
  • java.sql.Types.VARCHAR (255)

Из моего опыта первый список отсутствует INTEGER и DECIMAL который также может быть использован без проблем (по крайней мере для Oracle и Postgres - не существует DB2 для тестирования).

+0

а как насчет точности в числовых значениях? Можно ли указать точность в этих типовых типах липибазы? –

+0

@ ArturSkrzydło, как указано в руководстве: «* При необходимости точность может быть включена *», и по моему опыту «decimal' отлично работает. Это включает, например, 'Десятичного (18,2)' –