2008-11-22 9 views
29

आयात करना मुझे लगता है कि यह एक बेवकूफ सवाल है क्योंकि यह सामान्य ज्ञान की तरह लगता है। । । लेकिन कोई भी Google खोज जो मैं एक साथ रख सकता हूं वह मुझे जवाब देने में सक्षम नहीं है!SQLite3 डंप को डेटाबेस में वापस

मुझे पता है कि .dump कमांड का उपयोग कर sqlite3 डेटाबेस से डेटा कैसे प्राप्त करें। लेकिन अब मेरे पास export.sqlite3.sql शीर्षक वाली यह ASCII फ़ाइल है। । । मुझे लगता है कि मैं चाहता हूं कि डेटाबेस में वापस पाने के लिए प्रतीत नहीं होता है।

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

क्या कोई मेरी मदद करने में कोई दिक्कत करेगा? और जब आपको कोई रास्ता मिल जाए, तो क्या आप मुझे बताएंगे कि आपने Google में क्या प्लग किया है, क्योंकि मैं अपने सिर को एक चम्मच के साथ खुले कर रहा हूं, जो मैंने सोचा था कि एक आसान खोज होगा।

उत्तर

49
cat dumpfile.sql | sqlite3 my_database.sqlite 

This is modified from the sqlite3 getting started guide.

+17

उत्कृष्ट उत्तर। टूटी हुई रिकॉर्ड की तरह लगने के जोखिम पर, यह बिल्ली का बेकार उपयोग है। पुनर्निर्देशन जवाब है: sqlite3 my_database.sqlite converter42

+0

मैं सहमत हूं, मैं आमतौर पर इसे <फॉर्म में भी उपयोग करता हूं। बस स्पष्ट होने की कोशिश कर रहा है। मैंने वास्तव में दस्तावेज में उदाहरण को संशोधित किया जो zcat का उपयोग कर रहा है। –

+0

मैं अनुशंसा करता हूं कि "PRAGMA journal_mode = OFF; PRAGMA सिंक्रोनस = OFF;" इसे चलाने से पहले डंप फ़ाइल में। यह बहुत तेजी से बहाल करता है। स्पष्ट रूप से * पुनर्स्थापित डेटाबेस का उपयोग करते समय इन सेटिंग्स को बंद नहीं किया जाना चाहिए। – Brian

37

आप अपने ऑपरेटिंग सिस्टम निर्दिष्ट नहीं किया है और जब तक

sqlite3 my_database.sqlite < export.sqlite3.sql 

यूनिक्स जायके के लिए काम करेंगे, यह खिड़कियों के लिए काम नहीं करेगा।

.dump कमांड के विपरीत .read कमांड है। वाक्य रचना

sqlite3> .read export.sqlite3.sql 
+0

यूनिक्स स्वाद कमांड काम नहीं कर रहा है ..क्या आपने इसका उपयोग बहाल किया? –

+0

हां, लेकिन ध्यान रखें कि sqlite3> एक यूनिक्स कमांड नहीं है, यह sqlite3 प्रॉम्प्ट – Noah

+0

है, मुझे निर्यात विवरण के बिना समाधान मिला है, यह पुनर्स्थापित करता है .. वैसे भी –

2

यह भी काम करना चाहिए होगा:

echo '.read export.sqlite3.sql' | sqlite3 my_database.sqlite3 

एक संभावित लाभ "sqlite3 my_database.sqlite3 < export.sqlite3.sql" खत्म हो गया है कि SQLite के .read आदेश सकता है (अब या भविष्य में) और अधिक उन्नत से सिर्फ "पढ़ें सभी पाठ में और इसे निष्पादित करें। " यह बैचिंग कर सकता है, जो बड़े डंप के लिए मेमोरी उपयोग को कम करेगा। हालांकि, मैं स्वीकार करता हूं कि यह एक सुंदर अस्पष्ट और असंभव लाभ है। सभी संभावनाओं में, .read बस इनपुट से प्रत्येक पंक्ति को पढ़ता है और इसे पुनर्निर्देशन और पाइप ऑपरेटरों की तरह निष्पादित करता है।

+0

त्रुटि: "export./home/ubuntu/trydatabase/ newsql.sql " इस कमांड का उपयोग कर –

0

यूनिक्स स्वाद के लिए इसका उपयोग करें।

Ctrl + Alt + T और लिखने

sqlite3 /home/ubuntu/output.sqlite < /home/ubuntu/input.sql 

यह इनपुट फ़ाइल से अपने डेटाबेस बहाल।

+1

सभी यूनिक्स स्वादों पर 'Ctrl + alt + T' क्या करता है? – mwfearnley

+0

यह टर्मिनल खोलता है। –

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