加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java-使用Liquibase和Spring合并DB中的值

发布时间:2020-12-15 01:21:39 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用liquibase更改数据库的布局,但是我有一个问题是: 例如,假设我的旧数据库的表包含2列(firstName,lastName),而我的新数据库中只有两列(userName). 我该如何使用liquibase和Spring进行迁移.因为按照以下逻辑,我会丢失原始值. 理想情况下,我希望

我正在尝试使用liquibase更改数据库的布局,但是我有一个问题是:

例如,假设我的旧数据库的表包含2列(firstName,lastName),而我的新数据库中只有两列(userName).

我该如何使用liquibase和Spring进行迁移.因为按照以下逻辑,我会丢失原始值.

理想情况下,我希望能够调用我的Java代码进行更改,但在这种情况下,在某些情况下可能需要过度设计;)

<databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.1
    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.1.xsd">

    <changeSet author="gcardoso" id="2012082703">

        <dropColumn columnName="firstName" tableName="t_user"/>
        <dropColumn columnName="lastName" tableName="t_user"/>

        ?????? How to migrate the names ??????

        <addColumn tableName="t_user">
            <column name="userName" type="VARCHAR2(255,0)">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>
</databaseChangeLog>
最佳答案
您需要自定义重构.有两种可能性:

> Custom SQL以使用sql可以实现的更改
> Custom Refactoring class进行更复杂的更改.通过这种方法,您可以使用Java来实现重构.

所以你会

>添加新列
>通过自定义重构更改将数据从旧列迁移到新列
>删除旧列

如何在Spring JdbcTemplate中使用自定义重构类

@Override
public void execute(Database database) throws CustomChangeException {
    JdbcConnection connection = (JdbcConnection) database.getConnection();
    DataSource dataSource = new SingleConnectionDataSource(connection.getUnderlyingConnection(),true);
    JdbcTemplate template = new JdbcTemplate(dataSource,false);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读