Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在SQLite中的两个表之间复制数据?_Database_Sqlite - Fatal编程技术网

Database 如何在SQLite中的两个表之间复制数据?

Database 如何在SQLite中的两个表之间复制数据?,database,sqlite,Database,Sqlite,我有两个不同列的表,如下所示: table1 ( _id, title, name, number, address ) table2 ( _id, phone, name, address ) 如何将数据“名称”、“地址”从表1复制到表2 我的问题有两种情况: 第一:同一数据库文件中的表1、表2 第二个:data1.db文件中的表1,data2.db文件中的表2 在SQL中复制的工作原理如下: insert into

我有两个不同列的表,如下所示:

table1
(
    _id,
    title,
    name,
    number,
    address
)

table2
(
    _id,
    phone,
    name,
    address
)
如何将数据“名称”、“地址”从表1复制到表2

我的问题有两种情况:

  • 第一:同一数据库文件中的表1、表2
  • 第二个:data1.db文件中的表1,data2.db文件中的表2

在SQL中复制的工作原理如下:

insert into table2 (name, address)
select name, address
from table1
如果列
id.
的值相同,则需要插入并更新

insert into table2 (name, address)
select name, address
from table1 t1
where not exists (select * from table2 t2 where t1._id = t2._id)
;
update table2 t2 name = (select name from table1 t2 where t1._id = t2._id)
;
update table2 t2 address = (select address from table1 t2 where t1._id = t2._id)

如果需要在数据库之间复制列,请首先将它们导出到一个文件中(使用您喜欢的任何格式,例如CSV),然后手动将该文件合并到第二个数据库中,因为您无法编写“使用这些sqlite结构”的SQL.

为什么不在第一次插入ID?@Ramin:我的代码在第一次插入所有ID。如果您试图从
表2
中插入已经存在的ID,则会出现错误。因此,这两个update语句将复制所有现有id的非id字段。在我重置主键id(从随机数到1,2,3,…,n(从1开始的整数))的情况下,第一段代码非常有用。