我有一个应用程序,其中包含使用Core Data构建的各种实体,这很棒,但我想提取这些数据,以便我可以构建数据库(用于研究目的)。
从iPhone导出CoreData实体的快速而轻松的方法是什么?
我一直在寻找,似乎有很多建议,一切看起来都很混乱。我开始手动编写代码将其导出为CSV,但这是很多工作,如果我更改数据库,我需要更改CSV导出器以匹配。
必须有一种非常简单的方法,不是吗?
您可以将SQLite文件导入其他内容吗? Apple不提供任何API来导出CoreData吗?
编辑:不需要像导出到Web服务那样花哨的东西。我只是想导出数据,以便我可以在桌面上管理它,也许在Access,Excel等等。它不会是一个疯狂的数据量,这主要是一个临时的解决方案。
EDIT2:找到了这个程序:http://sourceforge.net/projects/sqlitebrowser/ 这几乎是你需要的一切。包括CSV导出。
感谢大家的帮助
答案 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