1

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

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

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

必须有一个非常简单的方法来做到这一点,不是吗?

你能把 SQLite 文件导入别的东西吗?Apple 不提供任何 API 来导出 CoreData 吗?

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

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

谢谢大家的帮助

4

1 回答 1

2

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

如果您想要一个快速而肮脏的解决方案,只需复制数据库文件并使用sqlite3Mac 上的命令来提取数据。假设数据库文件名为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
于 2013-02-27T18:48:18.983 回答