इसे करने का उचित तरीका क्या है? क्या मैं सिर्फ .sq3 फ़ाइल की प्रतिलिपि बनाता हूं?
क्या होगा अगर साइट पर उपयोगकर्ता हैं और फ़ाइल को कॉपी करते समय लिखा जा रहा है?
इसे करने का उचित तरीका क्या है? क्या मैं सिर्फ .sq3 फ़ाइल की प्रतिलिपि बनाता हूं?
क्या होगा अगर साइट पर उपयोगकर्ता हैं और फ़ाइल को कॉपी करते समय लिखा जा रहा है?
जवाबों:
Sqlite3 कमांड लाइन टूल में .backup
डॉट कमांड की सुविधा है ।
आप अपने डेटाबेस से जुड़ सकते हैं:
sqlite3 my_database.sq3
और बैकअप डॉट कमांड के साथ चलाएं:
.backup backup_file.sq3
डेटाबेस से इंटरएक्टिव कनेक्शन के बजाय, आप बैकअप भी कर सकते हैं और बाद में कनेक्शन को बंद कर सकते हैं
sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
किसी भी तरह से परिणाम backup_file.sq3
डेटाबेस का नाम है my_database.sq3
।
यह नियमित रूप से फाइल कॉपी से अलग है, क्योंकि यह डेटाबेस पर वर्तमान में काम कर रहे किसी भी उपयोगकर्ता का ख्याल रखता है। डेटाबेस पर उचित ताले सेट होते हैं, इसलिए बैकअप विशेष रूप से किया जाता है।
sqlite3 m_database.sq3 ".backup m_database.sq3.bak"
.backup सबसे अच्छा तरीका है।
sqlite3 my_database .backup my_database.back
आप .dump कमांड भी आज़मा सकते हैं, यह आपको पूरे डेटाबेस या टेबल्स को टेक्स्ट फाइल में डंप करने की सुविधा देता है। यदि TABLE निर्दिष्ट किया गया है, तो केवल LIKE पैटर्न TABLE से मेल खाते डंप टेबल।
sqlite3 my_database .dump > my_database.back
डंप और स्टोर का उपयोग करके एक अभिलेखीय प्रतिलिपि बनाने का एक अच्छा तरीका, बाद के समय में डेटाबेस का पुनर्निर्माण करना।
sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database
इस प्रश्न की भी जाँच करें क्या SQLite3 .backup और .dump कमांड डेटाबेस को लॉक करते हैं?
.backup
ऊपर दिखाए गए अनुसार काम नहीं करता है ("। पर लापता फ़ाइलनाम तर्क")
try {
final String inFileName = "/data/data/your app package/databases/db";
File dbFile = new File(inFileName);
FileInputStream fis = new FileInputStream(dbFile);
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/CALC/Backup";
File dir = new File(path);
if (!dir.exists()) dir.mkdirs();
String outFileName = path + "/filename"; // output file name
// Open the empty db as the output stream
OutputStream output = new FileOutputStream(outFileName);
// Transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
Toast.makeText(getActivity(), "Backup Successfully", 2).show();
// Close the streams
output.flush();
output.close();
fis.close();
}
catch (Exception e) {
e.printStackTrace();
}