2011-08-14 79 views
4

私は、Symfony1.4とMySQL 5.1に基づいてERPシステムを再構築しています。課題は、以前のシステムがFilemaker Pro上に構築されており、すべての以前のデータを現在のシステムに移行する必要があることです。そのためには、まず前のスキーマ構造を持つMySQL DBにすべてのデータを移動し、必要に応じてスクリプトを作成して現在のシステムスキーマにデータをマップする必要があります。FilemakerからMysqlにデータベースを移行する方法は?

最初の手順はどのように進めますか?既存のツールやプロセスがありますか?

ご協力いただければ幸いです!前もって感謝します!

答えて

4

最も簡単な方法は、FileMakerからのデータを一般的な形式にエクスポートすることです。これを行うには、FileMakerでファイルを開く必要があります。必要なテーブルごとに、テーブルに関連付けられたレイアウトに移動し、メニューを使用してすべてのレコードを表示し、エクスポートします。

データフィールド(テキスト、数値、日付、時刻、タイムスタンプ)をエクスポートするようにしてください。通常、FileMakerには多くの計算フィールド(計算と要約)があるためです。 (これを行うには、最初にFile - Define Database、あるテーブル、タイプ別にファイルを並べ替え、最後のデータフィールドをメモしてください)

これはコンテナフィールドをエクスポートしませんが、あなたが持っていない場合。それはあまりにもそれらをエクスポートすることは可能だが、それはカスタムスクリプトが必要になります。

次のオプションは、ODBCを使用することです。それはあまり便利では通常より低速だからそれは「次へ」です。

FileMakerのコピーで、自分のサイトから30日間の試用版をダウンロードできます。完全に機能しています。

2

私はこの時点で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

は、ソフトウェアなしの変換:ここ は全くのソフトウェアを使用していないのFileMaker Proからデータを転送する方法を示すとともに書かれた記事へのリンクです。

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

ファイルアクセス権限: 目に見えるエクスポート機能でのFileMakerデータベースファイルを持つことが可能です。 FileMakerでは、カスタムメニューを実装してエクスポート機能を無効にすることができます。この種の問題を解決するには、[フルアクセス]権限を持つ管理者アカウントのパスワードを使用してデータベースにログインする必要があります。ツール - >カスタムメニュー - > [FileMaker標準FileMakerメニュー] このメニューを選択すると、すべての通常メニューが使用可能になります。

FileMakerバイナリファイル形式: FileMakerデータベースでは、独自のバイナリファイル形式を使用してデータを保存することが重要です。これらのファイルは、ファイル形式が公開されていないため、LinuxまたはUNIXオペレーティングシステムで直接読み取ることはできません。私はFileMaker社外の一人の人だけが知っています。FileMaker Inc.のファイルフォーマット(.fp7、.fmp12バージョン)の最新バージョンをリバースエンジニアリングして成功しています。

これは、FileMakerデータベースからデータを抽出するには、データを抽出するためにMacOSXまたはWindowsでFileMakerソフトウェアを実行する必要があることを意味します。これは、オープンソースの代替ファイルが利用可能なAccess .mdb/.accdbファイルを読むこととはまったく異なります。

ODBCとファイルのエクスポート: FileMakerから非ネイティブファイル形式へのデータのエクスポートには、いくつかの重要な制限があります。 UTF8形式のデータが失われたり、一部の形式でデータが切り捨てられたり、フィールドのデータが繰り返し表示されたりすることがあります。このため、ODBC経由でFileMakerに直接接続し、データを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]内の値を区切り、データiを書き込む関連するテーブルに追加します。

関連する問題