如何将数据从FileMaker Pro导入PostgreSQL



FileMaker Pro类似于Microsoft Access。我想获取此FileMaker数据并将其导入PostgreSQL数据库。

有什么建议吗?我应该编写一个程序来执行此操作吗?或者我应该将 FileMaker 数据放入 Access 并从那里导入数据?

感谢您的输入!!

是的,你可以这样做。在此过程中,你可以使用 Access 作为中间层,但除了个人偏好之外,没有理由这样做。

首先,我建议您花一些时间分析您的FileMaker数据库。是否所有数据表都按照标准关系原则设计?(FileMaker 支持,但不强制实施关系设计)。字段类型是否在逻辑上定义,主键/辅助键是否一致且结构良好?如果没有,我强烈建议您在继续迁移之前解决这些问题(如果您愿意,可以在 FileMaker 或 Access 中

)。

其次,我会看看是否有任何特殊的FileMaker数据结构不会干净地传输。以下是需要注意的主要事项:

  • 计算字段扮演着重要的角色(尤其是在早期的 FileMaker 解决方案中)不会直接转换为 SQL,以后可能应该简单地删除并使用应用程序逻辑重新创建。
  • 重复字段是 FileMaker 建立关系前时代遗留下来的遗产,需要转换为单独的表格结构;
  • 容器字段,类似于 SQL BLOB。这里的挑战是找到一种将容器数据导入 SQL 的干净方法,因为 CSV 和类似格式不接受 blob,除非将它们转换为 Base64(如果需要,FileMaker 可以为您执行此操作);
  • 数据约束;这些只会在传输中丢失,所以最好只记下你关心的任何内容,并在我们的Postgres DDL中手动重新创建这些。

完成此准备工作后,您可以轻松地将数据从 FileMaker 导出为标准格式(如 CSV),然后可以直接导入到新的 Postgres 表中。这里需要注意的关键事项:

  • 对于要导出的每个 FileMaker 表,请确保在导出前选择所有记录,以确保包含所有记录(否则,FileMaker 将仅导出当前为当前表找到的记录)。
  • 您需要为要移动到 Postgres 的每个表单独导出数据。

最后,当然,在Postgres中定义新表并导入CSV数据。

正如大家所说,将数据传输到 Access 只会导致完全不必要的额外工作,

我建议查看FileMaker ODBC来提取数据,或者使用Postgres ODBC驱动程序,并通过"执行SQL"脚本步骤将FileMaker中的数据插入PostgreSQL表中。

将数据

传输到 Access 时可能发生的一个问题是,Access 限制为每个表最多 255 个字段。客户发送给我进行转换的 FileMaker 数据库通常有数百个字段。

当我使用 FmPro Migrator 执行这些转换时,我总是在数据库之间建立直接连接 - 以便在 FileMaker 数据中保留 UTF8 编码。

另一个考虑因素是,您是否还希望转换 FileMaker 中的 GUI 和业务逻辑(脚本)以用于 PostgreSQL 数据库。FileMaker 中的对象可以提取为 XML,从而可以将这些对象转换为其他应用程序中等效且有用的对象。当今GUI的一个流行选择是PHP Web应用程序。

例如,FileMaker布局中的元素(字段,图像,文本标签,矢量图形对象)可以在PHP Web应用程序中转换为HTML,CSS和JavaScript。

FileMaker 值列表(用于下拉菜单、单选按钮和复选框组)可以在 PHP 中定义为数组。这可以是值的静态数组,也可以是在运行时检索的动态数组 - 以模拟原始功能。

出于性能原因,将 FileMaker 未存储的计算和摘要字段转换为 SQL 视图会非常有帮助。这样,计算在数据库服务器中执行,而不是通过 Web 应用程序中的 PHP 执行。

我不会通过 Access,除非有一些令人信服的、未说明的理由这样做。

如果这只是一次性例程,则导出为某些常见格式(如 CSV)可能是最简单的。

如果你必须重复并保持实时,我会研究 FileMaker 中的 ODBC 连接,并在 PostgreSQL 系统的应用程序逻辑中编写例程。

最新更新