簡體   English   中英

如何使用 Liquibase 腳本將數據從一個表復制到另一個表

[英]How to copy the the data from one Table to another Table Using Liquibase scripts

我想知道使用 Corda 的一部分 Liquibase 進行以下測試(將數據從一個表復制到另一個表)的解決方案。

案例:作為我想在現有數據庫中創建一個新表的一部分,該數據庫已經有一個名為 TableA 的表(具有 id、name、value 列),其中有一些數據初始化,我創建了一個 TableB(具有相同的 id,名稱,值列),我想將數據從 TableA 復制到 TableB。

為此,我按照 Liquibase 中的建議使用了以下 liquibase 腳本,為了測試我已經連接到 PostgreSQL 數據庫並連接了名為“corda_schema”的模式,其中包含表格。

<changeSet author="liquibase.corda" id="update-table">
      <update schemaName="corda_schema" tableName="TableB">
        <column name="id" valueComputed="(SELECT id from TableA)"/>
    <column name="name" valueComputed="(SELECT name from TableA)"/>
    <column name="value" valueComputed="(SELECT value from TableA)"/>
      </update>
</changeSet>

當我嘗試使用 Liquibase 更新腳本時出現以下錯誤

錯誤:liquibase.corda 失敗
錯誤:在 SQL 語句中找不到架構“CORDA_SCHEMA”

如果我沒有像這樣在更新中給出架構名稱

<update tableName="TableB">
    <column name="value" valueComputed="(SELECT value from TableA)"/>
</update>

Liquibase 正在 Public 架構中搜索 TableA,我收到此錯誤:

錯誤:liquibase.corda 失敗錯誤:在 SQL 語句中找不到架構“PUBLIC”

而且我還通過創建表本身嘗試了這個 Liquibase 腳本 changeSet 我試圖更新數據,這個 changeSet 正在運行並且創建了表但沒有復制數據。

<changeSet author="liquibase.corda" id="update-table">
  <createTable schemaName = "corda_schema" tableName="TableB">
    <column name="id" valueComputed= "(SELECT id FROM TableA)"/>
</createTable>
</changeSet>

請建議我遺漏的任何內容或任何其他可以使我的測試成功將數據從一個表獲取到另一個表的用法。

提前致謝。

我建議只使用自定義 sql:

<changeSet author="liquibase.corda" id="insert-table">
      <sql>
        insert into corda_schema.TableB
        select id,name,value from corda_schema.TableA;
      </sql>
</changeSet>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM