Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据库从Filemaker迁移到Mysql?_Mysql_Database_Migration_Filemaker_Database Migration - Fatal编程技术网

如何将数据库从Filemaker迁移到Mysql?

如何将数据库从Filemaker迁移到Mysql?,mysql,database,migration,filemaker,database-migration,Mysql,Database,Migration,Filemaker,Database Migration,我正在重建一个基于Symfony1.4和MySQL 5.1的ERP系统。挑战在于以前的系统是基于Filemaker Pro构建的,我必须将以前的所有数据迁移到当前系统。为此,首先我需要将所有数据移动到一个MySQL数据库中,该数据库保持以前的模式结构不变,然后我可以根据需要编写脚本,将数据映射到当前系统模式 我应该如何进行第一步?是否有任何现有的工具或流程可以做到这一点 任何帮助都将不胜感激!提前谢谢 最简单的方法是将数据从FileMaker导出为某种通用格式。为此,您需要在FileMaker中

我正在重建一个基于Symfony1.4和MySQL 5.1的ERP系统。挑战在于以前的系统是基于Filemaker Pro构建的,我必须将以前的所有数据迁移到当前系统。为此,首先我需要将所有数据移动到一个MySQL数据库中,该数据库保持以前的模式结构不变,然后我可以根据需要编写脚本,将数据映射到当前系统模式

我应该如何进行第一步?是否有任何现有的工具或流程可以做到这一点


任何帮助都将不胜感激!提前谢谢

最简单的方法是将数据从FileMaker导出为某种通用格式。为此,您需要在FileMaker中打开文件,对于每个表,您需要转到与该表关联的布局,并使用菜单显示所有记录和导出

确保只导出数据字段(文本、数字、日期、时间和时间戳),因为FileMaker通常会有大量计算字段(计算和摘要)。(要执行此操作,请先转到文件-定义数据库,然后转到某个表,按类型对文件进行排序,并注意最后一个数据字段

这不会导出容器字段,但大多数应用程序不存储此类数据。也可以导出它们,但需要自定义脚本

下一个选项是使用ODBC。它是“下一个”,因为它不太方便,而且通常速度较慢


如果你没有FileMaker的副本,你可以从他们的网站下载一个30天的试用版;它功能齐全。

我目前正在用Java使用JDBC来完成这项工作。你需要将JDBC驱动程序和MySQL导入你的库中。我目前正在其他帖子中寻找处理如此大量数据的最佳实践

您可能需要自己在MySQL中创建这些表,我可能会尽量推荐它,因为FMPro通常有一个奇怪的设置,您可能不想精确复制(我注意到在最近的一个示例中,文本字段也必须设置为长度,否则事情会变得一团糟。)一个简单的下午在MySQL Developer中工作(或者不管他们现在叫什么)画一些漂亮的图表

以下是一些骗局:

public static String dbaseURL = "jdbc:filemaker://machineIP:2399/database";

public static void FMProConnect() {

// Load the JDBC to ODBC driver
try {

    Class.forName("com.filemaker.jdbc.Driver");

} catch(java.lang.ClassNotFoundException e) {
        System.err.print("ClassNotFoundException: ");
        System.err.println(e.getMessage());
}
}
public static void copyTable(){
FMProConnection.FMProConnect();
Connection dbConnection = null;
Statement query = null;
PreparedStatement stmt = null;
    try {
      // Create a database connection
  dbConnection =
    DriverManager.getConnection(dbaseURL, "fmprouser", "fmpropassword");
  // Create a statement and execute the SQL query
  query = dbConnection.createStatement();
}
catch (SQLException e) {
  System.out.println("Error connecting to dbase.");
  e.printStackTrace();
  //System.exit(1);
}

ResultSet results = null;
try {

  results =
    query.executeQuery("SELECT * from table");

  // Iterate through the results and print them to standard output
     Connection con = DriverManager.getConnection("jdbc:mysql://mysqlserver.com/database","username","password");

  while (results.next()) {
    String fname = results.getString("field");
    String lname = results.getString("field1");
 // System.out.println("Found user \"" + fname + " " + lname + "\"");
  stmt = con.prepareStatement("INSERT ignore INTO table (field, field1 values (?, ?)");
  stmt.setString(1, fname);
  stmt.setString(2, lname);
  stmt.executeUpdate();

  }
  System.out.println("Completed Customers");
}
catch (SQLException e) {
  System.out.println("Error retrieving data from database.");
   e.printStackTrace();
  //System.exit(1);
}


}

无软件转换: 这里有一个链接,指向一篇写得很好的文章,展示了如何不使用任何软件从FileMaker Pro传输数据

[

文件访问权限: FileMaker数据库文件可能没有可见的导出功能。在FileMaker中,可以实现自定义菜单以禁用导出功能。要解决此类问题,您需要使用管理员帐户密码登录数据库,并具有[完全访问]权限。然后您可以选择菜单:工具->自定义菜单->[FileMaker标准FileMaker菜单] 选择此菜单后,所有常规菜单都将可用

FileMaker二进制文件格式: 认识到FileMaker数据库使用专有的二进制文件格式来存储其数据非常重要。这些文件都不能在任何Linux或UNIX操作系统上直接读取,因为文件格式尚未公开。我只知道FileMaker Inc.以外的一个人成功地对现代版本进行了反向工程n文件格式(.fp7、.fmp12版本)

这意味着要从FileMaker数据库中提取数据,必须始终在MacOSX或Windows上运行FileMaker软件才能提取数据。这与读取Access.mdb/.accdb文件完全不同,后者提供了开源替代方案

ODBC与文件导出: 将数据从FileMaker导出到任何非本机文件格式都有一些重要的限制。可能会丢失UTF8格式的数据、截断某些格式的数据以及重复字段数据的问题。这就是为什么我建议通过ODBC直接连接到FileMaker,并将数据直接传输到MySQL(或您选择的任何其他数据库)

什么是重复字段? FileMaker中的重复字段类似于在单个记录的单个字段中存储数据数组。我通常建议将此数据分离为相关记录,并通过父记录的主键进行关联。上面链接的perl脚本可以完成此任务。但您必须提前在FileMaker中准备数据。Since FileMaker不再支持通过ODBC驱动程序重复字段,您需要在FileMaker中创建一个脚本,将所有重复值移动到第一个重复值中。 因此,如果您有一个重复值字段,如下所示:

Field1[1]=“abc”
字段1[2]=“定义”

Field1[3]=“ghi”
我的第一个想法是XML和语法,它们看起来有点复杂。对有助于这一过程的应用程序有什么建议吗?