需求:
有兩個不同的SQLite數據庫 A、B,需要將B數據庫中的表復制到A數據庫中去。
准備條件:
安裝好adb。
原理:
首先將用sqlite3打開一個數據庫,然後用attach命令將另一個數據庫引進來,之後就可以就可以用別稱來訪問被引入的數據庫中的表。
案例:
dictionary中有一個t_words表,我需要將其完整復制到sentences.db中。
操作步驟:
1.首先在終端啟用adb,命令是adb shell,定位到相應的文件。
2.sqlite3 dictionary,打開dictionary數據庫。(提前將dictionary的擴展名去掉,不然後面會出一點問題)。
.schema查看建表的命令。
# sqlite3 dictionary SQLite version 3.7.4 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .schema CREATE TABLE android_metadata (locale TEXT); CREATE TABLE [t_words] ([english] VARCHAR(30) NOT NULL ON CONFLICT FAIL,[chinese] VARCHAR(100) NOT NULL ON CONFLICT FAIL,CONSTRAINT [english_primary] PRIMARY KEY ([english])); sqlite>
記錄下t_words建表的命令,後面會用到。
3..q命令退出數據庫,sqlite3 sentences.db進入sentences數據庫,用剛才記錄下的命令建一個dictionary中一模一樣的t_words表,.schema看一下是否成功建立;
4.執行attatch database dictionary as dic;之後就可以用dic來引用dictionary數據庫了;
5.執行insert into t_words select * from dic.t_words,等1s,復制完畢。
注意:
1)先創建表再insert而不是直接用
create table t2 as select * from db1.t1;
因為,直接用創建出來的表和原始的表不一樣!
2)sqlite中執行的命令以“;”結束,要記得敲。