2012-09-27 66 views
0

我有一个包含数据的现有表。使用Liquibase将列拆分为MySQL表

foobar_table 
    foo 
    bar 
    baz 

我想给baz列了foobar_table表拆分并创建一个名为baz_table新表包含它。操作完成后,我会与包含它的操作之前有数据的每一列下面的结构开始:

foobar_table 
    foo 
    bar 

baz_table 
    baz 

我怎样才能做到这一点与Liquibase

P.S.通过Grails Database Migration plugin使用Liquibase。 grailsChange标签给了我希望,但缺乏示例文档让我想要。

更新:

我不知道,可以在变更集使用的sql的。我在here的例子中发现了它,我认为这是我需要的。

回答

1

正如您已经发现的那样,您可以将任意SQL查询作为变更集的一部分运行。我在我的blog post中查看了常见的警告。

因此,对于你的例子:

<changeset> 
    <createTable tableName="baz_table"/> 
    <sql>insert into baz_table(baz) select baz from foobar</sql> 
    <dropColumn tableName="foobar_table" columName="baz"/> 
</changeset>