2010-10-29 118 views
1

我正在接管一個項目上的一些舊代碼。 我的第一個任務之一是減少應用程序二進制文件的最終大小。 由於內容包含大量文本文件(其中大約10.000個),我的第一個想法是創建一個包含它們的數據庫。SQLite3:批量插入?

我真的不使用SQLite和核心數據,所以我有兩種基本的問題:

1 - 是我的假設是正確的?我的SQLite文件的尺寸是否應該小於所有文本文件的尺寸? 2 - 是否有任何方法可以自動執行將它們全部放入我新創建的數據庫(可能使用某種GUI或腳本)的任務,每個記錄在單個表內一個文件?

我仍在試驗CoreData,但我已經做了很多搜索,並且找不到任何與將所有內容放在數據庫文件中相關的任何內容。這樣做手動已經證明不是一件容易的事情!

謝謝。

回答

1

使用SQLite的替代方法可能是使用zipfile代替。這很容易創建,並且一定會保證安全的空間(並且絕對減少文件數量)。有幾種在iPhone上使用zipfiles的實現,例如ziparchiveTWZipArchive

+0

我對zip文件的主要擔憂是兩個:因爲文本文件的重量約爲100 MB(全部在一起),解壓縮會導致性能下降,不是嗎?而且,最終的應用程序(一個.ipa文件)已經壓縮了所有內容。它會像.zip中的.zip一樣。這真的會爲我節省更多空間嗎? – 2010-10-29 19:18:42

+0

你應該不需要真正解壓整個文件。相反,你應該只提取那些你將要使用的文件。至於ipa已經是zip文件了:我不知道他們是否會在iphone上解壓縮;如果是的話,那麼在zip文件中有一個zip文件可能仍然有用。但是,對於ipa文件的大小,它不會有任何區別。我懷疑所有討論過的東西都會有所作爲 - 你真的需要在文本文件本身找到冗餘,這是zip無法找到的。 – 2010-10-29 19:38:51

+0

作爲一名Mac用戶這麼久,我忘記了我只能輕鬆解壓所選文件。謝謝,馬丁。 - 這就是爲什麼我選擇馬丁的答案作爲正確的答案(也因爲有很好的聯繫),儘管ldav1s也很好。 – 2010-11-14 23:53:20

1

1 - 它可能不會更小,但可以在將這些文件存儲到數據庫中之前對其進行壓縮。或者沒有這個問題的數據庫。

2 - 當然。編寫腳本來做這件事不應該太難。

+0

在將數據存儲到數據庫之前,我會如何壓縮它們?據我所知,我只能使用一些圖像類型文件,PFD和TXT。我錯了嗎?如果我不使用數據庫,你會建議什麼樣的壓縮?就像我問馬丁那樣,這不就是一場表演嗎? – 2010-10-29 19:25:02

+0

有關iPhone壓縮庫的更多信息,請參閱[這裏](http://stackoverflow.com/questions/230984/compression-api-on-the-iphone)。我猜你會在複製到Xcode項目之前壓縮它們。 zlib壓縮不太佔用CPU密集型bzip2例程(通常)。當然壓縮會影響性能,但是你必須看看你是否可以忍受它。我會使用zlib,而無需瞭解您的文件/應用程序性能。它速度相當快,文本文件壓縮比較小。 – ldav1s 2010-10-29 19:38:06

0

如果您正在尋找SQLite批量插入命令來爲2)編寫腳本,則不會有一個AFAIK。在事務內的循環中準備插入語句是最好的,我想如果插入10,000條記錄只需要幾秒鐘(如果有的話)。

+0

你能指點我一些類似想法的教程嗎?很抱歉,但我對SQLite數據庫非常瞭解,而且我幾乎不知道它們。 – 2010-10-29 19:22:11