學習android開發快一個月了,手頭上有個項目要用到SQLite數據庫,所以在網上搜了下並結合自己的體會總結了一下關於SQLite數據庫的導入和導出的知識。
新建student.bat腳本文件和student.sql數據庫文件,代碼如下
student.bat
@ECHO OFF
C:
CD %HOMEPATH%/Desktop
SQLITE3 STUDENT.DB < student.sql //從student.sql文件提取數據導入並創建student.db
SQLITE3 STUDENT.DB .dump > student_result.sql //從student.db導出數據並創建student_result.sql
student.sql
CREATE TABLE STUDENTS(
ID INTEGER PRIMARY KEY,
TEACHER_ID INTEGER,
NAME TEXT NOT NULL,
SEX CHAR NOT NULL);
INSERT INTO STUDENTS (ID, TEACHER_ID, NAME, SEX)
VALUES (11111111111, 22222222222, '張三', '男');
INSERT INTO STUDENTS (ID, TEACHER_ID, NAME, SEX)
VALUES (1111111111, 22222222222, '李四', '男');
INSERT INTO STUDENTS (ID, TEACHER_ID, NAME, SEX)
VALUES (1111111, 22222222222, '王五', '男');
.quit
注意這裏在sql文件裏輸入了中文,新建txt文件時默認編碼格式是ANSI,這樣運行時會出錯或者什麼結果都沒,所以應該把文件的編碼格式都改成UTF-8,經過嘗試,這裏另存爲UTF-8也不行,所以最好是用EditPlus來寫txt裏面的內容並轉碼成UTF-8。運行student.bat後會出現兩個文件 student.db和student_result.sql
student.db
student_result.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE STUDENTS(
ID INTEGER PRIMARY KEY,
TEACHER_ID INTEGER,
NAME TEXT NOT NULL,
SEX CHAR NOT NULL);
INSERT INTO "STUDENTS" VALUES(1111111,22222222222,'王五','男');
INSERT INTO "STUDENTS" VALUES(1111111111,22222222222,'李四','男');
INSERT INTO "STUDENTS" VALUES(11111111111,22222222222,'張三','男');
COMMIT;
是不是發現和student.sql長得很像,其實兩個文件是一樣的,不信你把student_result.sql做導入文件試試。
上面是根據腳本創建SQLite數據庫並導出,接下來看看從已知已經存在的SQLite數據庫中導出sql文件方便隨時恢復數據庫。
這裏以桌面上salesmanager.db爲例
運行命令進入桌面路徑
sqlite3命令打開salesmanager.db數據庫
導出數據到sales.sql
這裏最後一行的.output stdout一定不能掉,不然導出的sql文件爲空,裏面什麼數據都沒有。有了sal文件之後,可以隨時按照上面已經提供的方法恢復數據庫。
當然,有時候我們只需要SQLite裏面的相關數據就行,只需要把最後三行代碼修改一下就可以了。
這裏把salesmanager.db中的productinfo表導出到productinfo.txt中,前面忘了說了,所有導出文件如不存在會自動創建。