1. 程式人生 > >SQLite資料庫匯入和匯出

SQLite資料庫匯入和匯出

  學習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中,前面忘了說了,所有匯出檔案如不存在會自動建立。


所有檔案匯出匯入都在桌面上進行,開啟productinfo.txt發現所有資料都已經匯入了,這可比手動一個個輸入快多了,特別要注意的一點是倒數第二行後面必須跟分號,不然SQlite會認為命令沒輸完。