2009-12-22 15 views
6

मेरा सोलर डेटा स्रोत एक SQL डेटाबेस है जहां प्राथमिक कुंजी यौगिक है (यानी यह दो फ़ील्ड है)।यौगिक प्राथमिक कुंजी के साथ सोलर डीआईएच डेल्टा-आयात?

यह मेरा मुख्य DIH query के लिए ठीक है, मैं सिर्फ क्षेत्रों को श्रेणीबद्ध और है कि मेरे Solr प्राथमिक कुंजी हो जाता है। हालांकि यह दस्तावेज़ीकरण से अस्पष्ट है कि मैं इसका समर्थन करने के लिए डेल्टा-आयात क्वेरी कैसे लिखूंगा।

प्रलेखन पता चलता है मैं दो प्रश्नों की जरूरत है - तो वास्तव में व्यक्ति उन कुंजियों में से प्रत्येक के लिए इसी दस्तावेजों को पुनः प्राप्त करने परिवर्तित पंक्तियों की प्राथमिक कुंजी, और एक अन्य को खोजने के लिए एक। हालांकि यौगिक कुंजी के लिए यह कोई उदाहरण नहीं दिखा रहा है।

आदर्श रूप में मैं नहीं चाहता कि उन दो अलग-अलग क्वेरी सब पर चाहते हैं, यह डेटाबेस पर कम लोड डाल होता अगर उन दो प्रश्नों बस इस तरह के संयुक्त कर दिया गया है कि query और deltaQuery के बीच फर्क सिर्फ इतना है WHERE खंड है कि आधारित फिल्टर है last_changed पर।

तो, अगर अपने मुख्य query है:

SELECT key1 || key2 as pk FROM table 

क्या प्रासंगिक deltaQuery (और/या deltaImportQuery) की तरह लग रहे हैं?

मैंने केवल WHERE खंड जोड़ने की कोशिश की लेकिन क्वेरी के बाद मुझे लापता deltaImportQuery और उसके बाद एक शून्य-सूचक अपवाद के बारे में चेतावनी मिली।

उत्तर

-1

deltaImport के लिए दो प्रश्नों रहे हैं। पहला एक (deltaQuery) निर्धारित करने के लिए है कि क्या सूचकांक करना है। उदाहरण के लिए, इसमें हम परिभाषित कर सकते हैं कि हमें कौन सी आईडी इंडेक्स करने की आवश्यकता है। दूसरा यह इस आईडी से डेटा निर्धारित करने के लिए है। मेरी उदाहरण, आशा को देखो, it`ll आप मदद:

<entity name="address" pk="address_id" query="SELECT * FROM address a" deltaImportQuery="SELECT * FROM address a where a.address_id > ${dataimporter.delta.id}" 
      deltaQuery="select address_id as id from address where address_id=101010"> 

deltaImportQuery के इम्पोर्टेन्ट हिस्सा $ {dataimporter.delta.id} है। इस प्रकार हम अपनी आईडी को deltaQuery से deltaImportQuery पर सेट करते हैं।

+0

धन्यवाद, लेकिन आप वास्तव में सवाल पढ़ा था? – Alnitak

+0

बेशक, इससे पहले कि आप इसे संपादित करें। – Yurish

+0

असल में मैंने कभी इसे संपादित नहीं किया ... – Alnitak

0

अपने deltaQuery सेट जहां खंड में फिर बस के साथ अपने deltaImportQuery बारे में जो deltaImportQuery ट्रिगर किया जाएगा "1 का चयन करने के लिए" '$ {dataimporter.last_index_time}'

तो deltaQuery = "का चयन करें 1" deltaImportQuery = "a_table से चयन * जहां lastUpdated> '$ {dataimporter.last_index_time}' '

3
query="SELECT key1 || key2 as id, ...other fields FROM table" 

deltaImportQuery="SELECT key1 || key2 as id, ... other fields 
        FROM table 
        where key1 = '${dataimporter.delta.key1}' 
        and key2 = '${dataimporter.delta.key2}'" 

deltaQuery="SELECT key1 || key2 as id, key1, key2 
      FROM table 
      WHERE lastUpdated > '${dataimporter.last_index_time}'" 

मान लिया जाये कि कुंजी 1 और कुंजी 2 पाठ कर रहे हैं। उदाहरण के लिए key2 संख्यात्मक है, तो $ {dataimporter.delta.key2} के आसपास एकल उद्धरण की आवश्यकता नहीं होगी।

संबंधित मुद्दे