从 FileMaker Pro 移植到 PostgreSQL
版本 0.2 最后更新于 2001 年 8 月 24 日
FileMaker 数据库
FileMaker Pro 是一个最初在 Macintosh 上由 Claris 开发的数据库,Claris 是 Apple Computer 的子公司。大约在 1998 年,Claris 分裂,一些组件与 Apple 合作(如 ClarisWorks,后来成为 AppleWorks),而 FileMaker 成立了自己的公司。FileMaker Pro 现在是唯一一个定期使用的跨平台(PC 和 MAC)数据库系统。总的来说,它比 Microsoft Access 更友好。ODBC 和 SQL 相对较晚才进入 FileMaker,因此 DBMS 并不像其他 DBMS 那样符合标准。
对于 Filemaker Pro 6 及更早版本:FileMaker 文件相当于单个 PostgreSQL 表。FileMaker 是一个关系型 DBMS,但关系是在 FileMaker Pro 中的不同文件之间。通常,被认为是一个单一数据库的实际上是几个或许多个独立的 FileMaker 文件。因此,从 FileMaker 转换为 PostgreSQL 时,一次处理一个文件,并将它们重新创建为 PostgreSQL 表。
对于 Filemaker Pro 7 及更高版本:所有表格都可以包含在一个单一的 Filemaker Pro 文件中,或者也可以放在单独的文件中(对于从版本 6 转换的数据库来说,这通常是这种情况)。如果使用多表 Filemaker Pro 文件,则可以遵循相同的基本过程:在 PostgreSQL 中创建表格以匹配 Filemaker Pro 中的表格,然后导出和导入数据。
FileMaker Pro 数据库,用一般性的描述来说,有 4 个基本组件
- 用户界面 (UI)
这些是允许您输入、显示和操作数据的文本框、按钮、菜单、布局等,以及更改数据报告格式。 - 字段定义
您创建的单个字段上的数据定义。 - 数据
数据本身。 - 脚本
- 为增加功能而在 FileMaker 中编写的脚本。
"用户界面" 和 "脚本" 组件是 FileMaker 特有的,在 SQL 或 PostgreSQL 中都没有等效项,因此,不幸的是,无法移植到 PostgreSQL,除非从头开始完全重写。由于 PostgreSQL 有各种各样的前端可用于提供用户界面(pg_access、使用 perl、ColdFusion 和其他 Web 编程语言的基于 Web 的界面),因此用户界面也必须从头开始重写。为了促进此过程,对基本隐喻以及用户与系统交互的方式进行图示非常有用。
"字段定义" 组件和 FileMaker 数据可以相当容易地转换为 PostgreSQL 表。
字段定义
为了将数据库从 FileMaker 转换为 PostgreSQL,最常见的方法是手动创建每个表,并针对字段类型定义做出决定。
FileMaker 中有几种不同的数据类型:文本、数字、日期、时间、容器、计算、汇总和全局。
日期和时间定义在 PostgreSQL 中有明显的对应项。
文本就像 PostgreSQL 中的 "text" 一样,基本上大小不受限制。FileMaker 中没有与 char 和 varchar 数据类型等效的内容。如果您的文本字段很小,例如用于邮政编码、电话号码等,您可能希望使用 varchar 或 char 数据类型而不是 text。
在 FileMaker 中,数字类型没有精度 - 它可以是整数,也可以是浮点数。在 FileMaker 数据库中,它们的区别在于输出的格式,而不是数字的存储方式 - 数字以浮点数形式存储。因此,在移植到 PostgreSQL 时,确定哪些字段可以是整数,哪些字段应该是浮点数。
其他数据类型用于解决将数据库从 FileMaker 转换为 PostgreSQL 时遇到的非常具体的问题。FileMaker 中的计算和汇总字段类型必须通过在 PostgreSQL 中使用函数来移植,或者通过在 PostgreSQL 和前端之间的编程交互中包含这些计算来移植。
从 FileMaker 导出数据并导入到 PostgreSQL
从 FileMaker 导出数据非常容易。有许多可用的格式,许多格式提供了可能使生活更轻松的重要选项。
最简单的方法可能是将数据作为分隔文本获取,然后创建脚本或程序将这些信息放入 PostgreSQL 数据库。如果您想要一份我使用的脚本的副本,请给我发电子邮件,我会将最新版本发送给您。
此外,手动编辑此文件以使其对应于 INSERT 语句是另一种可能性,尽管如果记录很多,这很耗时。
FileMaker Pro 和 ODBC
FileMaker Pro 符合 ODBC 标准,因此可以使用 FileMaker Pro 通过这种方式从 PostgreSQL 数据库获取数据。
Michelle Murrain,博士