2016-10-03 5 views
0

静的データのCSVファイルをテーブルにロードするためにloadUpdateData(loadDataも試してみました)を使用しています。 runAlways = "true"とマークされていますが、CSVを変更するとチェックサムに失敗します。 Liquibase - loadUpdateDataがCSVチェックサムを変更しました

LiquiBaseをするMavenプラグイン3.5.2

私が試したもの:

は、私は(/変更/ dlete行を追加します)、ファイル内のデータを変更することができるようにしたいとDBは、それに応じて更新しましたので、私はテーブルを切り捨てるためにチェンジセットを作成し、それをrunAlways = "true"とし、changeAlert = "true"であるloadUpdateDataを実行するチェンジセットをマークしました。私は、ファイル名がこれらのチェンジセットと一致するDatabaseChangeLogから削除するチェンジセットの追加に頼る必要はありません。別の方法がありますか? runAlwaysは、Liquibaseサイトの他のSO投稿や投稿と同様に、以前のバージョンの人たちのために働いていたようです。

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

    <property name="now" value="sysdate" dbms="oracle" /> 

    <!-- Truncate the table and insert all the data from the CSV file --> 
    <changeSet author="churcp3" id="deleteConfigData" runAlways="true"> 

     <preConditions onFail="MARK_RAN"> 
      <tableExists tableName="CONFIGURATION" /> 
     </preConditions> 

     <delete tableName="CONFIGURATION"> 
     </delete> 

     <rollback /> 
    </changeSet> 

    <changeSet author="churcp3" id="insertConfigData" runAlways="true"> 
     <loadUpdateData encoding="UTF-8" 
      file="src/main/resources/data/configuration.tsv" quotchar="" 
      primaryKey="CONFIGURATION_ID" 
      separator="~" tableName="CONFIGURATION"> 
      <column name="CONFIGURATION_ID" type="NUMERIC" /> 
      <column name="SERVICE_NAME" type="STRING" /> 
      <column name="CATEGORY" type="STRING" /> 
      <column name="CONFIGURATION_KEY" type="STRING" /> 
      <column name="CONFIGURATION_VALUE" type="STRING" /> 
      <column name="CREATE_TS" type="DATETIME" /> 
      <column name="CREATED_BY" type="STRING" /> 
      <column name="UPDATED_TS" type="DATE" defaultValueComputed="${now}" /> 
      <column name="UPDATED_BY" type="STRING" /> 
     </loadUpdateData> 

     <rollback> 
      <delete tableName="configuration"></delete> 
     </rollback> 

    </changeSet> 

</databaseChangeLog> 

答えて

1

愚かな私。 runOnChange = "true"が必要です。runAlways = "true"ではありません。

関連する問題