如何将数据从FileMaker Pro导入PostgreSQL

时间:2015-06-11 00:54:06

标签: postgresql filemaker

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

有什么建议吗?我应该写一个程序来做这个吗?或者我应该将FileMaker数据放入Access并从那里导入数据?

感谢您输入!!

4 个答案:

答案 0 :(得分:2)

是的,你可以这样做。您可以在此过程中使用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数据。

答案 1 :(得分:0)

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

我建议使用FileMaker ODBC提取数据,或使用Postgres ODBC驱动程序并使用"执行SQL"从FileMaker插入数据。脚本步入PostgreSQL表。

答案 2 :(得分:0)

除非有一些令人信服的,未说明的理由,否则我不会通过Access。

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

如果你需要重复并保持实时,我会查看到FileMaker的ODBC连接,并在PostgreSQL系统的应用程序逻辑中编写例程。

答案 3 :(得分:0)

将数据传输到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 Unstored Calculation和Summary字段转换为SQL视图非常有用。这样,计算在数据库服务器中执行,而不是通过Web应用程序中的PHP执行。