SQLite資料公升級資料遷移

2022-07-26 22:48:13 字數 1334 閱讀 5937

做android應用,不可避免的會與sqlite打交道。隨著應用的不斷公升級,原有的資料庫結構可能已經不再適應新的功能,這時候,就需要對sqlite資料庫的結構進行公升級了。 sqlite提供了alter table命令,允許使用者重新命名或新增新的字段到已有表中,但是不能從表中刪除字段。

並且只能在表的末尾新增字段,比如,為 subscription新增兩個字段:

1alter

table

subscription 

addcolumn

activation blob;

2alter

table

subscription 

addcolumn

keyblob;

另外,如果遇到複雜的修改操作,比如在修改的同時,需要進行資料的轉移,那麼可以採取在乙個事務中執行如下語句來實現修改表的需求。

1. 將表名改為臨時表

alter

table

subscription rename 

to__temp__subscription;

2. 建立新錶

create

table

subscription (orderid 

varchar

(32

primary

key,username 

varchar

(32

notnull

,productid 

varchar

(16

notnull

);3. 匯入資料  

insert

into

subscription 

select

orderid, 「」, productid 

from

__temp__subscription;

或者  

insert

into

subscription() 

select

orderid, 「」, productid 

from

__temp__subscription;

* 注意 雙引號」」 是用來補充原來不存在的資料的

4. 刪除臨時表  

drop

table

__temp__subscription;

通過以上四個步驟,就可以完成舊資料庫結構向新資料庫結構的遷移,並且其中還可以保證資料不會應為公升級而流失。

當然,如果遇到減少欄位的情況,也可以通過建立臨時表的方式來實現。

公升級資料庫

第一版只有book表 第二版加上category表 第三版為book表加上category id 列 book表 這是公升級後的原來沒有category id 列 public static final string create book create table book id integer ...

sqlite 輕量級資料示例

sqlite 輕量級資料示例 drop table test 1.建庫,建立乙個空的文字檔案,之後將副檔名 txt 改為 db 2.建表 create table if not exists test id integer primary key autoincrement,name text,kw...

mysql億級資料遷移

背景 mysql5.6 分庫分表 跨資料庫例項,要求線上遷移 切換功能 檢視各資料庫占用磁碟空間大小 select table schema,concat truncate sum data length 1024 1024,2 mb as data size,concat truncate sum...