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會認爲命令沒輸完。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章