我想将一组表从一个模式复制到同一个数据库上的另一个模式。我在Ubuntu上使用postgres v9,我们使用Liquibase对我们的数据库进行任何更改。
我可以使用类似于下面的代码创建新表,但我需要将新表创建为select * from another table
<changeSet author="jDoe" id="1">
<createTable tableName="abcproxy">
<column name="errtime" type="datetime">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="errmsg" type="varchar(255)">
<constraints nullable="false"/>
</column>
<column name="version" type="integer">
<constraints nullable="false"/>
</column>
</createTable>
我知道我们可以通过提到here的sql来做到这一点,但我想通过Liquibase XML配置来实现。另外,如果我们可以使用liquibase配置来复制授权/特权,那就太棒了。
我可以尝试按照提到的here移动表格,但截至目前,我的要求是复制而不是移动表格。
请告诉我任何有关实现这一目标的建议。感谢。
答案 0 :(得分:1)
您可以在sql
内使用changeSet
标记,例如:
<changeSet author="jDoe" id="1">
<precondition onFail="MARK_RUN">
<not>
<tableExists tableName="abcproxy" schemaName="newSchema"/>
</not>
</precondition>
<sql>create table newSchema.abcproxy as select * from oldSchema.abcproxy</sql>
</changeSet>
Althow,这种方法存在一个问题:这个changeSet
将复制旧模式中表中的所有数据,但不会复制密钥。