लक्ष्य: एक मौजूदा सिस्टम से डेटा के रात के निर्यात के साथ डेटाबेस अद्यतन करने के लिए एक सीआरओएन कार्य (या अन्य अनुसूचित घटना) का उपयोग करना।रेल ऐप में डेटा आयात करने के लिए रेक कार्य कैसे लिखें?
सभी डेटा किसी मौजूदा सिस्टम में बनाया/अपडेट/हटा दिया गया है। वेबसाइट इस प्रणाली के साथ सीधे एकीकृत नहीं होती है, इसलिए रेल ऐप को डेटा निर्यात में दिखाई देने वाले अपडेट को प्रतिबिंबित करने की आवश्यकता होती है।
मुझे लगता है कि इस तरह दिखता है ~ 5000 उत्पादों की एक .txt
फ़ाइल है:
"1234":"product name":"attr 1":"attr 2":"ABC Manufacturing":"2222"
"A134":"another product":"attr 1":"attr 2":"Foobar World":"2447"
...
सभी मान दोहरे उद्धरण चिह्नों ("
) कि कोलन (:
)
फील्ड्स हैं द्वारा अलग किया जाता में संलग्न तार कर रहे हैं :
id
: अद्वितीय आईडी; अल्फान्यूमेरिकname
: उत्पाद का नाम; कोई भी चरित्र- गुण कॉलम: तार; कोई भी चरित्र (उदाहरण के लिए, आकार, वजन, रंग, आयाम)
vendor_name
: स्ट्रिंग; कोई भी चरित्रvendor_id
: अद्वितीय विक्रेता आईडी; संख्यात्मक
वर्तमान प्रणाली में विक्रेता जानकारी सामान्य नहीं है।
यहां सर्वोत्तम अभ्यास क्या हैं? क्या उत्पादों और विक्रेताओं की तालिकाओं को हटाना ठीक है और हर चक्र पर नए डेटा के साथ फिर से लिखना ठीक है? या क्या यह केवल नई पंक्तियों को जोड़ने और मौजूदा लोगों को अपडेट करना बेहतर है?
नोट्स:
- इस डेटा
Orders
कि हर रात को डेटाबेस आयात के माध्यम से बना रहेगा उत्पन्न करने के लिए इस्तेमाल किया जाएगा।OrderItems
को डेटा फ़ाइल में निर्दिष्ट उत्पाद आईडी से कनेक्ट करने की आवश्यकता होगी, इसलिए हम प्रत्येक आयात के लिए एक ऑटो-वृद्धिशील प्राथमिक कुंजी पर भरोसा नहीं कर सकते हैं; अद्वितीय अल्फान्यूमेरिक आईडी कोproducts
सेorder_items
में शामिल होने के लिए उपयोग करने की आवश्यकता होगी। - आदर्श रूप में, मैं विक्रेता डेटा
- मैं वेनिला SQL कथन का उपयोग नहीं कर सकते हैं को सामान्य बनाने में आयातक चाहते हैं, इसलिए मुझे लगता है मैं आदेश
Product.create(...)
औरVendor.create(...)
शैली सिंटैक्स का उपयोग करने में एकrake
कार्य लिखने के लिए की आवश्यकता होगी। - यह EngineYard
मैं इस कोशिश की, लेकिन मैं मुख्य के लिए त्रुटि 'अपरिभाषित स्थानीय चर या विधि 'डेटा' हो रही है: Object'। कोई विचार क्यों हो रहा है? – Nick
मुद्दा यह था कि 'नेमस्पेस डेटा डू' को 'नेमस्पेस में बदलना था: डेटा करें'। – Nick