SQLite資料庫匯入和匯出
阿新 • • 發佈:2019-02-13
學習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
注意這裡在sql檔案裡輸入了中文,新建txt檔案時預設編碼格式是ANSI,這樣執行時會出錯或者什麼結果都沒,所以應該把檔案的編碼格式都改成UTF-8,經過嘗試,這裡另存為UTF-8也不行,所以最好是用EditPlus來寫txt裡面的內容並轉碼成UTF-8。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
執行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中,前面忘了說了,所有匯出檔案如不存在會自動建立。