2013-10-25 263 views
0

我有一個海量數據庫(〜800 GB)和幾個索引表。我需要將一個表(包括索引)複製到新的數據庫。複製表本身非常簡單。將sqlite索引從一個數據庫複製到另一個數據庫

$ sqlite3 newDB 
> attach database 'oldDB.db' as oldDB 
> create table newTable as select * from oldDB.oldTable 

但我似乎無法找到任何信息的方式也複製索引。有沒有辦法做到這一點?由於表格如此之大,我真的很想避免爲它們重新編制索引。

回答

0

SQLite沒有複製索引內容的機制。

如果這個特定的表格是數據庫中大部分數據,複製它的最快方法是複製數據庫文件,然後刪除所有其他表格。 但除此之外,你無法避免reindex操作。

請注意,CREATE TABLE ... AS ...只會複製表格的內容,但不會複製整個表格定義(如列類型或約束)。

0

在單個事務中複製大表不是一個好主意。如果您真的必須先關閉日誌功能(目標數據庫):

PRAGMA journal_mode=OFF; 
0

正如其他人所說的,該指數不能被打破。我嫌疑多花時間複製數據庫,然後下降非常大表將不僅僅是長 - > 創建新的目標數據庫,2.確定原始CREATE TABLE語句(源數據庫的SQLITE_MASTER表)並重新創建目標數據庫中的表。然後3.只是ATTACH您的目標數據庫到源數據庫和INSERT INTO destinationdb.tablename SELECT * FROM sourcedb.tablename;*獲取副本滾動。

相關問題