2017-07-27 27 views
0

私はliquibaseでcsvファイルを使って2つのテーブルを設定しようとしています。 テナントと呼ばれるテーブルが1つあり、tenant_configurationという名前のテーブルがあり、テナントには外部キーがあります。最初の部分は、負荷のテナントのデータです:外部キーliquibaseでcsvファイルからデータを読み込み

<changeSet id="1" context="test"> 
    <comment>Insert data for tenant table</comment> 
    <loadUpdateData 
      primaryKey="id" 
      file="tenant.csv" 
      tableName="tenant"/> 
</changeSet> 

それから私は、テナントの設定を読み込むが、最初の変化からtenant_idを取得するために別のCSVファイルを使用したいと思います。

<changeSet id="2" context="test"> 
    <comment>Insert data for tenant_db_configuration table</comment> 
    <loadData tableName="tenant_db_configuration" 
       file="tenant_db_configuration.csv" 
       separator="," > 
     <column name="tenant_id" type="NUMERIC" defaultValueComputed="(SELECT ID FROM tenant WHERE tenant_id = tenant_1)"/> 
     <column header="username" name="username" type="STRING"/> 
     <column header="password" name="password" type="STRING"/> 
    </loadData> 
</changeSet> 

はこれを試みたが、tenant_id部分やショーをLiquiBaseを無視:

私はその外部キーを取得し、データをロードするために、既存のCSVファイルをマージすることができますどのように
[Failed SQL: INSERT INTO [dbo].[tenant_db_configuration] ([username], [password]) VALUES... 

ありがとうございました!

答えて

0

私の知る限り、secomndのCSVファイルtenant_db_configuration.csvで手動で関係を作成する必要があります。つまり、そこの各列は、テナット表の既存のIDを指し示す必要があります。

あなたのCSVデータを信頼することが重要でない場合は、データをインポートする前にchangeSetを使用して外部キーチェックを無効にすることができます。

私はウィッヒDBMSは、使用している知らないが、MYSQLで

<changeSet author="liquibase-docs" id="sql-example"> 
    <sql dbms="mysql"> 
     SET FOREIGN_KEY_CHECKS=0; 
    </sql> 
</changeSet> 

で、その後、あなたは別のチェンジセットにした後、それを有効にすることができます。

質問から3ヶ月が経過しています。あなたがすでにそれを解決した場合、その解決策は何ですか?

関連する問題