هناك عدة طرق لعمل نسخ احتياطي لقاعدة بيانات SQLite إلى ملف وهي :
• استخدم الأمر .backup .
• استخدم الأمر .clone .
• استخدم الأمر .dump .
•نسخ الملف في نظام الملفات.
الأمر .backup:
هذا الأمر يقوم بإنشاء نسخة احتياطية من قاعدة البيانات في ملف. ويقبل استعمال الاختصار واسم الملف الذي يتم النسخ الاحتياطي إليه.
عند تجاهل اسم الاختصار لقاعدة البيانات فسيتم استعمال قاعدة البيانات الرئيسية.
وهذا مثال على ذلك :
.backup mybackup.db
هذا الأمر يمكننا من إنشاء ملف مسمى backup.db يحتوي على النسخة الاحتياطية لقاعدة البيانات. يمكن ربط هذه النسخة بسطر الأوامر لبرنامج SQLite3 بعدها نقوم بكتابة الأمر .databases لعرض قائمة قواعد البيانات لهذا الاتصال.
sqlite> ATTACH DATABASE 'mybackup.db' AS MyBackup;
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /Users/data/entreprise.sq3
1 temp
2 MyBackup /Users/data/mybackup.db
عمليا, يجب القيام بعملية النسخ الاحتياطي إلى مسار مختلف ، وعليه، يجب كتابة المسار كاملا بعد كتابة الأمر .backup ، مثلا:
.backup /remote/folder/mybackup.db
الأمر .clone :
الأمر .clone هو شبيه للأمر .backup . في حين أن الأمر .clone يستعمل قاعدة البيانات الحالية فقط، لذا لا يمكن تحديد قاعدة بينات أخرى للاستنساخ.
لاستنساخ قاعدة البيانات الحالية ، نكتب .clone متبوعة باسم ملف قاعدة البيانات الذي نقوم بعملية الاستنساخ البيانات إليه.
كما يلي :
.clone myclone.db
نتيجة تنفيذ هذا الأمر تبدو كما يلي :
sqlite> .clone myclone.db employers... done attestations... done attestations1... done archives... done Genres... done
يمكن ربط قاعدة البيانات المستنسخة كما يلي :
sqlite> ATTACH DATABASE 'myclone.db' AS MyClone; sqlite> .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /Users/data/entreprise.sq3 1 temp 2 MyBackup /Users/data/mybackup.db 3 MyClone /Users/data/myclone.db
الأمر .dump:
يمكن استعمال الأمر .dump لتفريغ قاعدة البيانات في ملف من نوع ASCII . فمثلا، يمكن التفريغ في ملف من نوع .SQL الذي يحتوي على عبارات SQL لتوليد قاعدة البيانات منه.
تفريغ قاعدة البيانات كليا:
هذا المثال يقوم بتفريغ قاعدة البيانات entreprise.sq3 بكل محتوايتها في الملف entreprise.sql
sqlite3 entreprise.sq3 .dump > entreprise.sql
محتوى الملف entreprise.sql:
PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; /* Tables */ CREATE TABLE ATTESTATIONS ( ATTESTATIONID INTEGER NOT NULL, ATESSTATIONLIBELLE VARCHAR(100) NOT NULL, ATTESTATIONDATE DATE, EMPLOYERID INTEGER NOT NULL ); CREATE TABLE ATTESTATIONS01 ( ATTESTATIONID INTEGER NOT NULL, ATESSTATIONLIBELLE VARCHAR(100) NOT NULL, ETABLISSEMENTDATE DATE, EMPLOYERID INTEGER NOT NULL ); CREATE TABLE EMPLOYERS ( EMPLOYERID INTEGER NOT NULL, EMPLOYERNAME VARCHAR(100) NOT NULL ); CREATE TABLE GENRES ( GENREID INTEGER NOT NULL, GENRE VARCHAR(10) NOT NULL ); COMMIT; /* Data for table "ATTESTATIONS" */ INSERT INTO ATTESTATIONS (ATTESTATIONID, ATESSTATIONLIBELLE, ATTESTATIONDATE, EMPLOYERID) VALUES (1, 'ATTESTATION DE TRAVAIL', '2016-08-05', 1); INSERT INTO ATTESTATIONS (ATTESTATIONID, ATESSTATIONLIBELLE, ATTESTATIONDATE, EMPLOYERID) VALUES (2, 'ATTESTATION DE TRAVAIL', '2016-08-06', 4); INSERT INTO ATTESTATIONS (ATTESTATIONID, ATESSTATIONLIBELLE, ATTESTATIONDATE, EMPLOYERID) VALUES (3, 'ATTESTATION DE TRAVAIL', '2016-08-05', 9); INSERT INTO ATTESTATIONS (ATTESTATIONID, ATESSTATIONLIBELLE, ATTESTATIONDATE, EMPLOYERID) VALUES (4, 'ATTESTATION DE TRAVAIL', '2016-08-04', 8); INSERT INTO ATTESTATIONS (ATTESTATIONID, ATESSTATIONLIBELLE, ATTESTATIONDATE, EMPLOYERID) VALUES (5, 'ATTESTATION DE TRAVAIL', '2016-08-05', 7); INSERT INTO ATTESTATIONS (ATTESTATIONID, ATESSTATIONLIBELLE, ATTESTATIONDATE, EMPLOYERID) VALUES (6, 'ATTESTATION DE TRAVAIL', '2016-08-06', 3); COMMIT; /* Data for table "ATTESTATIONS01" */ INSERT INTO ATTESTATIONS01 (ATTESTATIONID, ATESSTATIONLIBELLE, ETABLISSEMENTDATE, EMPLOYERID) VALUES (1, 'ATTESTATION DE TRAVAIL', '2016-08-05', 1); INSERT INTO ATTESTATIONS01 (ATTESTATIONID, ATESSTATIONLIBELLE, ETABLISSEMENTDATE, EMPLOYERID) VALUES (2, 'ATTESTATION DE TRAVAIL', '2016-08-06', 4); INSERT INTO ATTESTATIONS01 (ATTESTATIONID, ATESSTATIONLIBELLE, ETABLISSEMENTDATE, EMPLOYERID) VALUES (3, 'ATTESTATION DE TRAVAIL', '2016-08-05', 9); INSERT INTO ATTESTATIONS01 (ATTESTATIONID, ATESSTATIONLIBELLE, ETABLISSEMENTDATE, EMPLOYERID) VALUES (4, 'ATTESTATION DE TRAVAIL', '2016-08-04', 8); INSERT INTO ATTESTATIONS01 (ATTESTATIONID, ATESSTATIONLIBELLE, ETABLISSEMENTDATE, EMPLOYERID) VALUES (5, 'ATTESTATION DE TRAVAIL', '2016-08-05', 7); INSERT INTO ATTESTATIONS01 (ATTESTATIONID, ATESSTATIONLIBELLE, ETABLISSEMENTDATE, EMPLOYERID) VALUES (6, 'ATTESTATION DE TRAVAIL', '2016-08-06', 3); COMMIT; /* Data for table "EMPLOYERS" */ INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (1, 'Amar Lakhdar'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (2, 'Kamel Benahmed'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (3, 'Kamel Benkamel'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (4, 'Said'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (5, 'Faird'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (6, 'Lakhder'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (7, 'Nassim'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (8, 'Fouad'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (9, 'Mounir'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (10, 'Nadir'); INSERT INTO EMPLOYERS (EMPLOYERID, EMPLOYERNAME) VALUES (11, 'Tarik Moussafer'); COMMIT; /* Data for table "GENRES" */ INSERT INTO GENRES (GENREID, GENRE) VALUES (1, 'MASCULIN'); INSERT INTO GENRES (GENREID, GENRE) VALUES (2, 'FEMENIN'); COMMIT; /* Constraints */ ALTER TABLE ATTESTATIONS ADD PRIMARY KEY (ATTESTATIONID); ALTER TABLE ATTESTATIONS01 ADD PRIMARY KEY (ATTESTATIONID); ALTER TABLE EMPLOYERS ADD PRIMARY KEY (EMPLOYERID); ALTER TABLE GENRES ADD PRIMARY KEY (GENREID); COMMIT; /* Foreign Keys */ ALTER TABLE ATTESTATIONS ADD FOREIGN KEY (EMPLOYERID) REFERENCES EMPLOYERS(EMPLOYERID) ON DELETE NO ACTION ON UPDATE NO ACTION; ALTER TABLE ATTESTATIONS01 ADD FOREIGN KEY (EMPLOYERID) REFERENCES EMPLOYERS(EMPLOYERID) ON DELETE NO ACTION ON UPDATE NO ACTION; COMMIT;
الطريقة السابقة تسمح لنا بعمل نسخ احتياطي لقاعدة البيانات باستعمال سطر أوامر SQLite3 .
يمكن أيضا القيام بعمليتي نسخ/لصق لملف قاعدة البيانات ضمن نظام الملفات على القرص.
وللتأكذ من مسار الملف على القرص، يمكن استعمال الأمر .databases للعثور على موقعه.
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /Users/data/entreprise.sq3
1 temp
وباستعمال هذه المعلومة، يمكن الانتقال إلى المجلد /Users/data/entreprise.sq3 ثم ننسخ الملف entreprise.sq3 ثم لصقه في مكان آمن.
ليست هناك تعليقات:
إرسال تعليق