2010-05-14 15 views
7

में SQLite SQL फ़ाइल आयात करने का सबसे आसान तरीका क्या है शायद मुझे कुछ याद आ रहा है, लेकिन मुझे डेटा के लोड के साथ पूर्व-जनसंख्या वाले क्लाइंट साइड डेटाबेस की आवश्यकता है।वेब SQL SQL डेटाबेस

यह जांचने के लिए कि क्लाइंट साइड डेटाबेस कार्य पर थे या नहीं, मैंने transaction.executeSql() विधि का उपयोग करके डमी डेटा के साथ कुछ डमी टेबल बनाए। लेकिन जो मैं इकट्ठा कर सकता हूं, उससे प्रत्येक एकल तालिका के लिए निष्पादन एसक्यूएल कॉल की आवश्यकता होती है और क्वेरी में प्रवेश होता है। मैं आलसी हूं, और ऐसा लगता है कि मेरे लिए बहुत अधिक काम है।

मैं सोच रहा हूँ ...: मैं एक SQLite तालिका काफी जल्दी एक SQLite GUI का उपयोग कर बना सकते हैं। मैंने एक SQL फ़ाइल निर्यात करने और इसे एक executeSQL कथन में चलाने की कोशिश की है, लेकिन यह केवल पहले 'CREATE TABLE' को संसाधित करता है, कोई भी आवेषण नहीं।

वहाँ लेनदेन उद्देश्य यह है कि मैं एक साथ कई प्रश्नों को चलाने के लिए के बारे में पता नहीं कर रहा हूँ की कुछ विशेष विधि है?

इस मोबाइल सफारी रास्ता है, जो according to Apple एक SQLite डेटाबेस का उपयोग करता है उनके क्लाइंट साइड डेटाबेस सामान बिजली खरीदने के लिए है।

उत्तर

2

मैं प्रत्येक पंक्ति में तो एसक्यूएल को क्रियान्वित करने

टिप प्रत्येक पंक्ति के ऊपर फ़ाइल और पाश खींचने के लिए ajax इस्तेमाल किया एक कमांड के साथ एक फ़ाइल में सभी एसक्यूएल कोड डाल: तो मौजूद नहीं तो का उपयोग आप इसे हर बार कॉल कर सकते हैं अपने डेटाबेस

+0

कृपया, क्या आप कोड के कुछ टुकड़े प्रदान कर सकते हैं? मुझे एक ही समस्या है और फ्लाई पर बनाए गए एक वेब एसक्यूएल डेटाबेस में एक एसक्यूएल स्क्रिप्ट फ़ाइल लोड नहीं कर सकता है। – Zakaria

13

init को कमांडलाइन (एक linux बॉक्स में) पर, का उपयोग

sqlite3 myDatabase.sqlite .dump > myDatabase.sql 

अब आप SQLite एक सादे एसक्यूएल फाइल करने के लिए फेंक दिया फ़ाइल है। इसमें तालिका तालिका विवरण और सम्मिलित बयान शामिल होंगे।

फिर, कुछ clientside कोड (शायद कुछ समायोजन की आवश्यकता होगी, लेकिन आप अनुमान लगा सकेंगे कि)

पहले, एसक्यूएल डंप हड़पने। (JQuery का उपयोग कर उदाहरण)

$.get('./dumps/myDatabase.sql', function(response) { 
    // console.log("got db dump!", response); 
    var db = openDatabase('myDatabase', '1.0', 'myDatabase', 10000000); 
    processQuery(db, 2, response.split(';\n'), 'myDatabase'); 
}); 

processQuery समारोह प्रक्रिया सभी बयानों एक के बाद एक, और चुपचाप त्रुटियों पर ध्यान नहीं देता।

function processQuery(db, i, queries, dbname) { 
    if(i < queries.length -1) { 
     console.log(i +' of '+queries.length); 
     if(!queries[i+1].match(/(INSERT|CREATE|DROP|PRAGMA|BEGIN|COMMIT)/)) { 
     queries[i+1] = queries[i]+ ';\n' + queries[i+1]; 
     return processQuery(db, i+1, queries, dbname); 
     } 
     console.log('------------>', queries[i]); 
     db.transaction(function (query){ 
     query.executeSql(queries[i]+';', [], function(tx, result) { 
      processQuery(db, i +1, queries,dbname); 
     });   
     }, function(err) { 
     console.log("Query error in ", queries[i], err.message);       
     processQuery(db, i +1, queries, dbname); 
     }); 
    } else { 
     console.log("Done importing!"); 
    } 
} 
संबंधित मुद्दे