2010-10-29 123 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