2011-10-17 27 views
13

मैं अपने स्वयं के उपयोग के लिए एक टूल बना रहा हूं जिसके लिए एक साधारण डेटाबेस की आवश्यकता है। यह एचटीएमएल 5 इंडेक्सड डीबी एपीआई सीखने का एक अच्छा मौका लगता है, लेकिन यह महत्वपूर्ण है कि मैं किसी भी समय डेटा खोना न पड़े।इंडेक्सड डीबी डेटा का निर्यात और आयात

मुझे लगता है कि बैकअप के लिए ब्राउज़र की प्रोफाइल निर्देशिका का बैक अप लेना होगा, लेकिन मैं संभावित रूप से विभिन्न कंप्यूटरों के साथ काम करना चाहूंगा ताकि डेटाबेस निर्यात और आयात करना अच्छा रहे। क्या इंडेक्स डीडी डेटाबेस निर्यात और आयात करने का कोई आसान तरीका है? ब्राउज़र-विशिष्ट समाधान ठीक हैं।

+1

मुझे आश्चर्य है कि वेब इंस्पेक्टरों में ऐसा कुछ भी नहीं है। क्रोम का इंस्पेक्टर आपको डेटाबेस देखने देता है, लेकिन ऐसा नहीं लगता है कि आप इसके साथ बातचीत कर सकते हैं। – Bart

+0

जुहाना में कोई भाग्य? –

+0

@StevendeSalas अभी तक नहीं - मुझे लगता है कि यह संभव है कि यह इतना नया है कि इस तरह के उपकरण अभी तक मौजूद नहीं हैं। – JJJ

उत्तर

0

कोशिश उपयोग jStorage, यह सबसे ब्राउज़रों का समर्थन, localStorage बिना लोगों (बहिष्कृत Safari3 की तरह)

यह कार्यों के बहुत सारे मिल गया को छोड़कर, लेकिन हम लक्ष्य को हासिल कोशिश कर सकते हैं क्या आप उन के साथ हैं:

सेट (कुंजी, मूल्य)

$.jStorage.set(key, value) 

स्थानीय भंडारण के लिए एक मूल्य की बचत होती है। कुंजी स्ट्रिंग होने की जरूरत है अन्यथा एक अपवाद फेंक दिया जाता है। मूल्य वस्तुएं और सरणी या एक्सएमएल नोड समेत कोई JSONeable मान हो सकता है। वर्तमान में एक्सएमएल नोड्स अन्य ऑब्जेक्ट्स के अंदर घोंसला नहीं जा सकते हैं: $ .jStorage.set ("xml", xml_node) ठीक है लेकिन $ .jStorage.set ("xml", {xml: xml_node}) नहीं है।


प्राप्त (कुंजी [, डिफ़ॉल्ट])

value = $.jStorage.get(key) 
value = $.jStorage.get(key, "default value") 

प्राप्त मूल्य प्राप्त करता है तो कुंजी मौजूद है, या डिफ़ॉल्ट अगर ऐसा नहीं होता। कुंजी स्ट्रिंग होने की जरूरत है अन्यथा एक अपवाद फेंक दिया जाता है। डिफ़ॉल्ट कोई मूल्य हो सकता है।


फ्लश()

$.jStorage.flush() 

कैश साफ़ करता है।


सूचकांक()

$.jStorage.index() 

रिटर्न वर्तमान में एक सरणी के रूप में उपयोग में सभी चाबियाँ।

var index = $.jStorage.index(); 
console.log(index); // ["key1","key2","key3"] 

इसे ध्यान में रखते

, पर विचार आप पहले से ही, एक डीबी को सेट करने के var index = $.jStorage.index(); उपयोग कर सकते हैं और सरणी के साथ, एक jQuery चाहते प्रत्येक() पाश कि सरणी और कॉल के प्रत्येक महत्वपूर्ण हो जाता है बनाने get() $.jStorage.get(key) और एक बड़ी स्ट्रिंग में जोड़ें, अंत में .csv, या यहां तक ​​कि एक्सएमएल या जेसन (आप चुनते हैं) के रूप में पार्स किया जा सकता है।

हाथों में इन आंकड़ों के साथ, आप $.jStorage.flush() साफ़ कर सकते हैं।

फिर, यदि आप एक नए डीबी के लिए डेटा आयात करना चाहते हैं, तो आपको केवल एक .each() है जो आपके द्वारा सहेजी गई स्ट्रिंग/फ़ाइल को पढ़ता है और $.jStorage.set(key, value) के साथ के/वैल्यू पैरा सेट करना प्रारंभ करता है।

यदि आपके पास पहले से डीबी नहीं है, तो बस $.jStorage.set(key, value) के साथ एक नया पॉप्युलेट करें। :)

+2

यह प्रति प्रश्न का उत्तर नहीं देता है लेकिन अंतर्निहित समस्या का समाधान प्रदान करता है, इसलिए +1। – JJJ

+0

उस व्यक्ति के लिए मजेदार होगा जो आज -1 जोड़ा गया (उत्तर पोस्ट करने के 2 साल बाद) कहने के लिए क्यों डाउनवॉटेड। – RaphaelDDL

+3

1 साल बाद मुझे आपके प्रश्न का उत्तर देने दो, शायद यही कारण है कि मैंने डाउनवॉटिंग माना: यह सवाल का जवाब नहीं देता है कि जुहाना ने पहले ही उल्लेख किया है –

1

आप इसे वेबस्क्लुएल में एक समाधान posted here के शीर्ष पर जावास्क्रिप्ट लिखने में कर सकते हैं, हालांकि आप इंडेक्सडीबी सीखने का मौका चूक जाएंगे।

यदि आप वास्तव में इंडेक्सडीबी सीखना चाहते हैं तो शायद आप आयात/निर्यात उपकरण लिख सकते हैं, मुझे लगता है कि भविष्य में एक के लिए पर्याप्त आवश्यकता होगी।

5

pure IndexedDB spec में ऐसा कुछ भी उपलब्ध नहीं है, हालांकि, यह आपके स्वयं के तरीकों को लिखना संभव है जो इसे पूरा करेंगे।

बुनियादी डेटा आयात करने के लिए कदम एक के माध्यम से

  1. लिए कर रहे हैं एक IndexedDB डेटाबेस
  2. खोलने
  3. अपने वस्तुओं के माध्यम से
  4. पाश अनुक्रमित जोड़ने एक वस्तु की दुकान बना सकते हैं और एक एक करके उन्हें एक जोड़ने (add या put ऑपरेशन)

किसी ऑब्जेक्ट स्टोर को निर्यात करने के लिए आप कर सकते हैं :

  1. शून्य छोड़ दिया बाध्य के रूप में के साथ और प्रत्येक टिक
  2. में अनुरोध वस्तु के लिए एक onsuccess कॉलबैक जोड़ने एक कर्सर को खोलने पंक्ति मूल्य
  3. प्रत्येक सफलता कॉलबैक पर
  4. कब्जा करने के लिए एक विशेषाधिकार प्राप्त करने के लिए पंक्ति धक्का सरणी var

अंतिम पंक्ति null उत्सर्जित करेगा, जो एक राज्य के लिए यह पता लगाने की जब कर्सर अपने सभी रिकॉर्ड समाप्त हो गया है और किया जाता है आप देख सकते हैं है। जब ऐसा होता है, तो आप अपने ऑब्जेक्ट स्टोर के बैकअप का प्रतिनिधित्व करने वाले ऑब्जेक्ट्स के विशेषाधिकार प्राप्त सरणी को पारित करने वाले निर्यात कॉलबैक को कॉल कर सकते हैं।

+3

अनुभव से मैं कह सकता हूं कि संपादक की प्रतिक्रिया ही ऐसा करने का एकमात्र तरीका है। यह भी चेतावनी दी जानी चाहिए, आपको आवश्यक सभी असीमित प्रोग्रामिंग के साथ बहुत चालाक होना होगा। मैं एक कैश ऑब्जेक्ट की अनुशंसा करता हूं जहां सभी डेटा डंप हो जाएंगे। –

+1

मैंने एक मॉड्यूल [indexeddb-export-import] लिखा है (https://github.com/Polarisation/indexeddb-export-import) जो मूल रूप से इस उत्तर में वर्णित है। –

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