约 200 字 预计阅读 1 分钟
常用操作
合并表数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
-- 1. 将 data1 数据库附加到当前连接
ATTACH DATABASE 'data1.db' AS db1;
-- 注意:如果 data1 的完整路径不同,请替换为实际路径
-- 例如:ATTACH DATABASE 'C:/path/to/your/database/data1.db' AS db1;
-- 2. 查看两个表的结构是否一致(可选)
-- PRAGMA main.table_info(accounts);
-- PRAGMA db1.table_info(accounts);
-- 3. 合并数据(假设表结构完全相同)
INSERT INTO main.accounts
SELECT * FROM db1.accounts;
-- 4. 如果表有自增主键,为避免冲突,可以排除主键列:
-- 假设 accounts 表有 id, username, email, created_at 等列
-- INSERT INTO main.accounts (username, email, created_at, ...)
-- SELECT username, email, created_at, ... FROM db1.accounts;
-- 5. 如果只想合并不重复的数据,可以使用:
-- INSERT OR IGNORE INTO main.accounts SELECT * FROM db1.accounts;
-- 或
-- INSERT INTO main.accounts SELECT * FROM db1.accounts
-- WHERE NOT EXISTS (SELECT 1 FROM main.accounts a2 WHERE a2.id = db1.accounts.id);
-- 6. 分离附加的数据库
DETACH DATABASE db1;
-- 使用 rowid 作为排序基准,从 1 开始重新排序 accounts 表的 position 字段
UPDATE accounts
SET position = (SELECT COUNT(*) FROM accounts a2 WHERE a2.rowid <= accounts.rowid);
|