हमारी भी ऐसी ही स्थिति थी। स्क्रिप्ट को बेहतर बनाने के बहुत सारे प्रयासों के बाद, हमने तय किया कि हमें अपना आयात कार्य करने के लिए एक और दृष्टिकोण की आवश्यकता है, न कि ~10 घंटे।
हमने जो किया वह सभी PHP कोड को डंप कर दिया, और इसके बजाय mysqlimport
. का उपयोग करें CSV फ़ाइल की सामग्री को सीधे तालिका में लोड करने के लिए। उस तालिका में अब वह सब कुछ है जो हमें चाहिए, लेकिन उस रूप में नहीं जो हमारे लिए उपयोगी हो (कोई संरचना नहीं, कुछ क्षेत्रों को कुछ प्रसंस्करण की आवश्यकता होती है, आदि)
हालाँकि, क्योंकि सब कुछ अब डेटाबेस में है, हम एक क्वेरी के साथ वह सब कुछ कर सकते हैं जो हम चाहते हैं। उदाहरण के लिए, सभी डेटा को हटाना जो अब आयात फ़ाइल में नहीं है, बस DELETE FROM structured_table AS st LEFT JOIN unstructured_table AS ut ON st.someField = ut.someField WHERE ut.someField IS NULL;
, मौजूदा रिकॉर्ड को अपडेट करना केवल UPDATE structured_table AS st INNER JOIN unstructured_table AS ut ON st.someField = ut.someField SET st.anotherField = CONCAT(ut.aField, ' ', ut.yetAnotherField);
पर है। ।
जाहिर है, एक जटिल आयात स्क्रिप्ट के लिए, आपके प्रश्न अधिक जटिल होंगे और आपको उनमें से अधिक की आवश्यकता होगी। अलग-अलग क्षेत्रों पर प्रसंस्करण करने के लिए आपको कुछ संग्रहीत प्रक्रियाओं को फेंकने की भी आवश्यकता हो सकती है। लेकिन अगर आप इस तरह का तरीका अपना सकते हैं तो आप एक ऐसी प्रक्रिया के साथ समाप्त हो जाएंगे जो बहुत सारे डेटा को संभाल सकती है और बहुत स्केलेबल है।