2011-10-21 10 views
0

SQLServerデータベース用のデータインポートハンドラを試しています。複数のエンティティからのデータのインポート

solrconfig.xmlにDIhandlerを追加し、データベーススキーマに従ってdata-config.xmlを作成し、schema.xmlのフィールドを追加しました。私はSQLServerデータベースに接続しています。

接続後、dataimport?command=full-importを実行すると、XMLタグ(データ)が正しく取得されません。私のデータ-config.xmlの

* * ***

<document name="Product"> 
    <entity dataSource="ds-1" name="Item" pk="Item_ID" 
      query="select item.Item_ID, itemcode from item" 
      deltaImportQuery="select item.Item_ID, itemcode from item where 
          item.Item_ID='${dataimporter.delta.Item_ID}' " 
      deltaQuery="select Item_ID from item where last_modified > 
        '${dataimporter.last_index_time}' "> 

      <entity name="ReturnSolrFilter" 
       query="select Item_Id , CustomField_ID as CustomField from 
         ReturnSolrFilter where Item_Id = '${Item.Item_ID}' " 
       deltaQuery="select Item_Id , CustomField_ID as CustomField from 
           ReturnSolrFilter where last_modified > 
           '${dataimporter.last_index_time}' " 
       parentDeltaQuery="select Item_ID from item where Item_ID = 
           '${ReturnSolrFilter.Item_ID}' "> 
     </entity> 

    </entity> 
    </document> 

さて結果は** ** です***

  1. 両方の表にデータがある場合

    < DOC>

    < int name="Item_ID">13773< /int> 
    
        < str name="itemcode">15438680< /str> 
    
        < arr name="CustomField"> 
    
         < str>31< /str> 
    
         < str>32< /str> 
    
        < /arr> 
    < /doc> 
    
  2. アイテムテーブルではなくReturnSolrFilterで検出されたデータは、タグが生成されていない場合(これは発生していない実際の問題たCustomFieldタグである)

< DOC>

< int name = "Item_ID"> 13773 </int>

< STR名= "itemcode"> 15438680 </STR>

</DOC>

+0

データが見つからない場合、なぜタグを生成する必要がありますか?詳細を追加できますか? – Jayendra

+0

はい基本的にデータが見つからない場合は、空のタグを生成します。出来ますか? – Ashutosh

+0

基本的に、タグがxmlで生成されていない場合、属性マッピングでエラーを表示しています(フィールドがありません)。 – Ashutosh

答えて

0

私はあなたがISNULLを使用してCustomField_IDをラップする必要がありますと思う:空を作成するDataImportHandlerを強制すべきであるisnull(Custom_ID, '') as CustomField生成されたXMLのCustomFieldのフィールドに、solrドキュメントとして送信します。

+0

お返事ありがとうございます。 – Ashutosh