创建一个新表,与原始表具有相同的架构和索引:
CREATE
TABLE new_table AS SELECT * FROM original_table WHERE 0;
这将创建一个名为new_table
的新表,其结构与original_table
相同,但是不会复制原始表的数据。
添加原表中的所有索引到新表:
SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = 'original_table';
此命令将返回原始表的所有索引的名称和创建SQL语句。将这些SQL语句复制到剪贴板中。
然后,使用以下命令将所有索引添加到新表:
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
<将从上面的命令中复制的索引SQL语句粘贴到这里>
COMMIT;
PRAGMA foreign_keys=on;
此命令将禁用外键约束,然后使用事务将所有索引添加到新表中,并重新启用外键约束。
最后,将原始表的数据插入新表中:
INSERT INTO new_table SELECT * FROM original_table;
这将从原始表复制所有数据并将其插入新表中。
现在,您可以使用new_table
进行操作,并且它将包含原始表的所有数据和索引。
请注意,在复制表和索引之前,最好备份数据库以防意外发生。
- 3915
-
你隊永遠是對的14677128470
SQLite