sqlite-将表和列的子集复制到新的db文件中

时间:2019-08-23 14:31:58

标签: sqlite

我有一个数据库A.db,其中包含表t1t2t3。 现在,我想创建一个新数据库B.db,其中包含t1以及从col1中选择的一些列col4t2

使用.import时,我会遇到数百个错误,而且似乎只适用于完整表。

.output听起来就像我只是保存输出那样打印。

基本上,我需要在不同文件中使用insert into foo select ...。我该怎么办?

1 个答案:

答案 0 :(得分:1)

首先,您必须将A.db附加到当前数据库,并为其命名,例如adb
然后,就像所有表都存在于同一数据库中一样,编写插入语句,并使用数据库别名来限定列名。

最好在insert into...语句的括号内加入表foo的所有列名,并为它们设置其他2个表中的值,但还要确保这些列的顺序与选择列表中列的顺序相同:

attach database 'pathtoAdatabase/A.db' as adb;

insert into foo (column1, column2, .......)
select adb.t1.column1, adb.t1.column2, ...., adb.t2.col1, adb.t2.col4
from adb.t1 inner join adb.t2
on <join condition>

用连接两个表的条​​件替换<join condition>,以使要插入到foo的行成为类似的内容,

adb.t1.id = adb.t2.id