导出CoreData的快速而轻松的方法是什么?

时间:2013-02-27 18:33:59

标签: iphone objective-c database core-data export

我有一个应用程序,其中包含使用Core Data构建的各种实体,这很棒,但我想提取这些数据,以便我可以构建数据库(用于研究目的)。

从iPhone导出CoreData实体的快速而轻松的方法是什么?

我一直在寻找,似乎有很多建议,一切看起来都很混乱。我开始手动编写代码将其导出为CSV,但这是很多工作,如果我更改数据库,我需要更改CSV导出器以匹配。

必须有一种非常简单的方法,不是吗?

您可以将SQLite文件导入其他内容吗? Apple不提供任何API来导出CoreData吗?

编辑:不需要像导出到Web服务那样花哨的东西。我只是想导出数据,以便我可以在桌面上管理它,也许在Access,Excel等等。它不会是一个疯狂的数据量,这主要是一个临时的解决方案。

EDIT2:找到了这个程序:http://sourceforge.net/projects/sqlitebrowser/ 这几乎是你需要的一切。包括CSV导出。

感谢大家的帮助

1 个答案:

答案 0 :(得分:2)

不,Apple不提供任何专门用于导出数据的API。您可以使用现有的API,但您必须自己完成所有工作以导出关系并格式化数据。

如果您想要一个快速而又脏的解决方案,只需复制数据库文件并使用Mac上的sqlite3命令来提取数据。假设数据库文件名为store.db。您可以使用以下命令查看其架构:

sqlite3 store.db .schema

您应该发现很容易找出哪些表对应于哪些实体和关系。例如,我有一个名为LibraryEntry的实体。它由此表表示:

CREATE TABLE ZLIBRARYENTRY ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZGRIDHEIGHT INTEGER, ZGRIDWIDTH INTEGER, ZDYNAMICDATARELATION INTEGER, ZORIGINALDATARELATION INTEGER, ZTHUMBNAILDATARELATION INTEGER, ZDATE TIMESTAMP, ZAUTHOR VARCHAR, ZSIGNATURE VARCHAR, ZTITLE VARCHAR );

Z_开头的列是Core Data的内部元数据。其中,您可能只关心Z_PK。其他列(以Z开头但没有下划线)是LibraryEntry的属性。

要以CSV格式转储表格,请使用以下命令:

sqlite3 -csv store.db 'select * from zentity' > entity.csv

如果您需要标题行,请使用-header标记,如下所示:

sqlite3 -header -csv store.db 'select * from zentity' > entity.csv