我的工作方式与您描述的非常相似,所以我认为它可以帮助您,但使用UUID,在我的情况下,它使用Date,无论如何,相同的情况。
在我的更新日志中,我有一个属性来计算当前日期:
<property name="now" value="CURRENT_DATE" dbms="hsqldb" />
然后,我有一个用这个 changeSet 创建的用户表:
<changeSet author="miguel" id="1448735850226-1">
<createTable tableName="usuario">
<column name="login" type="VARCHAR(255)">
<constraints nullable="false"/>
</column>
<column name="oid" type="VARCHAR(255)"/>
<column name="fecha" type="date" defaultValueComputed="${now}">
<constraints nullable="false"/>
</column>
<column name="nombre" type="VARCHAR(255)"/>
<column name="apellidos" type="VARCHAR(255)"/>
<column name="activo" type="BOOLEAN"/>
</createTable>
</changeSet>
如您所见,fecha 列不为空,它具有defaultValueComputed 属性到${now} 函数。
我有一个 users.csv 文件,用于创建测试用户 (usuarios-test.csv):
login;oid;nombre;apellidos;activo
user;b776052e-7c9f-11e5-8584-67d602646e6f;Prueba;Prueba;true
如您所见,在 csv 文件中,我使用标题行,但不包含 fecha 字段。 (在我的例子中,UUID 是预先生成的,但我可以按你的方式更改它)。
我终于有了这个loadData 更改
<changeSet author="miguel" id="1448735850226-16">
<loadData tableName="usuario" encoding="UTF-8"
file="src/main/resources/liquibase/changelogs/usuarios-test.csv"
quotchar="'" separator=";" >
<column header="login" name="login" type="STRING"/>
<column header="oid" name="oid" type="STRING"/>
<column header="nombre" name="nombre" type="STRING"/>
<column header="apellidos" name="apellidos" type="STRING"/>
<column header="activo" name="activo" type="BOOLEAN"/>
</loadData>
</changeSet>
如您所见,我声明了.csv 文件中存在的所有列,而fecha 不包括在内,因此defaultValueComputed 有效,并且我使用当前日期创建了用户。
希望对你有帮助!