Как перенести базу данных из Filemaker в Mysql? - PullRequest
4 голосов
/ 14 августа 2011

Я перестраиваю систему ERP, основанную на Symfony1.4 и MySQL 5.1.Проблема в том, что предыдущая система была построена на Filemaker Pro, и мне пришлось перенести все предыдущие данные в текущую систему.Для этого сначала мне нужно переместить все данные в базу данных MySQL с неизменной структурой предыдущей схемы, а затем я могу сопоставить данные с текущей схемой системы, написав необходимый сценарий.

Как мне поступитьс этим первым шагом?Существуют ли какие-либо инструменты или процессы для этого?

Любая помощь будет оценена!Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 14 августа 2011

Самый простой способ - экспортировать данные из FileMaker в какой-то общий формат.Для этого вам нужно открыть файл в FileMaker, и для каждой таблицы вам нужно перейти к макету, связанному с таблицей, и использовать меню для отображения всех записей и экспорта.

Обязательно экспортируйте только поля данных (Текст, Число, Дата, Время и Отметка времени), поскольку для FileMaker характерно наличие большого количества вычисляемых полей (Расчет и Сводка).(Для этого сначала перейдите в Файл - Определить базу данных, затем в какую-то таблицу, отсортируйте файлы по типу и запишите последнее поле данных.

Это не будет экспортировать поля контейнера, но большинство приложений не сохраняюттакие данные. Их также можно экспортировать, но для этого потребуется собственный скрипт.

Следующий вариант - использовать ODBC. Это «следующий», потому что он менее удобен и обычно медленнее.

Если у вас нет копии FileMaker, вы можете загрузить 30-дневную пробную версию с их сайта, она полностью функциональна.

2 голосов
/ 17 августа 2011

В настоящее время я делаю это на 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);
}


}
0 голосов
/ 07 июня 2015

Преобразование без программного обеспечения: Вот ссылка на хорошо написанную статью, показывающую, как передавать данные из FileMaker Pro без использования программного обеспечения.

[http://drilix.com/en/tutorial/sql-migrate-filemaker-mysql-without-any-software][1]

Права доступа к файлам: Возможно иметь файлы базы данных FileMaker без видимой возможности экспорта. В FileMaker можно реализовать пользовательские меню, чтобы отключить функции экспорта. Чтобы решить проблему такого типа, вам необходимо войти в базу данных, используя пароль учетной записи администратора с правами [Полный доступ]. Затем вы можете выбрать меню: Инструменты-> Пользовательские меню -> [Стандартные меню FileMaker FileMaker] После выбора этого меню будут доступны все обычные меню.

Формат двоичного файла FileMaker: Важно понимать, что база данных FileMaker использует собственный двоичный формат файла для хранения своих данных. Ни один из этих файлов не может быть прочитан напрямую в любой операционной системе Linux или UNIX, поскольку формат файла не был обнародован. Я знаю только одного человека за пределами FileMaker Inc., который успешно разработал современную версию формата файлов (версии .fp7, .fmp12).

Это означает, что для извлечения данных из базы данных FileMaker у вас всегда должно быть программное обеспечение FileMaker, работающее в MacOSX или Windows для извлечения данных. Это полностью отличается от чтения файлов Access .mdb / .accdb, для которых доступны альтернативы с открытым исходным кодом.

ODBC против экспорта файлов: Существуют некоторые важные ограничения для экспорта данных из FileMaker в любой нестандартный формат файла. Возможна потеря данных в формате UTF8, усечение данных с некоторыми форматами и проблемы с данными повторяющихся полей. Вот почему я рекомендую установить прямое соединение с FileMaker через ODBC и перенести данные непосредственно в MySQL (или любую другую базу данных, которую вы выберете).

Что такое повторяющиеся поля? Повторяющееся поле в FileMaker аналогично хранению массива данных в одном поле одной записи. Обычно я рекомендую разделять эти данные на связанные записи, связанные первичным ключом родительской записи. Сценарии Perl, связанные выше, выполняют эту задачу. Но вы должны подготовить данные в FileMaker заранее. Поскольку FileMaker больше не поддерживает повторяющиеся поля через драйвер ODBC, вам необходимо создать сценарий в FileMaker, чтобы переместить все повторяющиеся значения в первое повторяющееся значение. Поэтому, если у вас есть поле повторяющихся значений, подобное этому:

Field1[1]="abc"
Field1[2]="def"
Field1[3]="ghi"

Вы перемещаете данные в:

Field1[1]="abc"<TAB>"def"<TAB>"ghi"

Затем вы можете перебирать значения с разделителями TAB в Field1 [1], чтобы записать данные в связанную таблицу.

...