gpt4 book ai didi

liquibase - 在 loadData CSV 中使用 liquibase 参数

转载 作者:行者123 更新时间:2023-12-05 00:58:11 25 4
gpt4 key购买 nike

我想为每个 dbms 生成 uuid 抽象函数:

<property name="uuid_function" value="gen_random_uuid()" dbms="postgresql"/>
<property name="uuid_function" value="NEWID()" dbms="mssql"/>
<property name="uuid_function" value="sys_guid()" dbms="oracle"/>

然后在我的 CSV 中使用此属性,该属性由 loadData 加载,如下所示:
"${uuid_function}"

但它不起作用($ 解析错误)。在 loadData 内的列上使用默认值的另一种方法:
<column name="id" type="COMPUTED" defaultValueComputed="${uuid_function}"/>

..也不起作用。 Id 列被定义为 NOT NULL,如果我将该列排除在我的 CSV 之外,它会提示列不能为空,即使它应该使用默认值。

我如何在我的 CSV 文件中使用参数和/或为什么默认值失败了?

最佳答案

我的工作方式与您描述的非常相似,所以我认为它可以帮助您,但是使用 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 field 。 (就我而言, 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工作,我用当前日期创建用户。

希望能帮助到你!

关于liquibase - 在 loadData CSV 中使用 liquibase 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33364582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com