FileMaker data migration tool を使ってみた!

2018年05月24日 02:00 PM

FileMaker 17


FileMaker v17 が発売されましたが、同時に FDS(FileMaker Developer Subscription) では、FileMaker data migration tool というツールが提供されました。

FDS(FileMaker Developer Subscription) とは、FileMaker Store で購入できる開発者向けのプログラムです。

FDS購入ページ

  • FileMaker Server 開発ライセンス
  • 発売前のソフトウェアのプレビュー
  • FileMaker Training Series:応用編 for FileMaker 15
  • iOS App SDK (ソフトウェア開発キット)

上記のような特典がありますが、それに加えて今回、FileMaker data migration tool が加わりました。

FileMaker data migration toolとは?

FileMaker data migration tool とは、簡単に言うとデータ移行ツールだと思ってください。

FileMaker でカスタムAppを作成していると、ユーザから様々な要望を聞くと思います。
その要望を、カスタムAppに実装するのですが、運用中のシステムに改良を加えると、実業務に支障が出ます。

その場合、カスタムAppのバックアップを取って、開発になるので、下記のような流れで進むと思います。

  1. バックアップ
  2. 開発
  3. テスト
  4. データ移行
  5. 本番運用

その際には、考えないといけない点が幾つかあります。

  • データマッピング(インポート時のフィールド照合)
  • アカウント(バックアップ後に追加されたアカウントや、パスワードの変更など)
  • カスタム値の値一覧(最新の値一覧)
  • シリアル値の自動入力オプションの次の値

FileMaker data migration tool は、上記の気をつけなくてはいけないことを自動で実行してくれるとても便利なツールです。

 

コマンドについて

ダウンロードしたファイルを、解凍してみました。
ダブルクリックすると、Macであれば、ターミナルが立ち上がり、下記の画面になります。

Description: Migrates all record data from a source FileMaker Pro Advanced file to a copy of a clone file.

Usage: FMDataMigration -src_path <path> -clone_path <path> [<other options>]

    -src_path <source file path>
    -src_account <source Full Access or FMMigration account> (default is Admin)
    -src_pwd <source Full Access or FMMigration password> (default is blank)
    -src_key <source decryption key>

    -clone_path <clone file path>
    -clone_account <target Full Access or FMMigration account> (default is Admin)
    -clone_pwd <target Full Access or FMMigration password> (default is blank)
    -clone_key <target decryption key>

    -target_path <target file path> (default is source path with " migrated" added)
    -force (overwrite existing target file)
    -ignore_valuelists (use custom value lists from clone instead of source)
    -ignore_accounts (use accounts and decryption key from clone instead of source)
    -ignore_fonts (assume no font mapping required for field contents)
    -v (verbose mode)
    -q (quiet mode)

logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[プロセスが完了しました]

この FileMaker data migration tool は、コマンドで操作するツールのようです。

 

-src (移行元データのファイル)

-srcから始まるオプションは、移行元データの情報を指定するものです。

-src_path   移行元ファイルのファイルパスを指定します。
-src_account   移行元ファイルのアカウント
-src_pwd   移行元ファイルのパスワード
-src_key   移行元ファイルの暗号化キー

 

-clone (クローン。データなしのコピー)

-cloneから始まるオプションは、データなしのコピーファイルについてのオプションです。

-clone_path   クローンファイルのファイルパスを指定します。
-clone_account   クローンファイルのアカウント
-clone_pwd   クローンファイルのパスワード
-clone_key   クローンファイルの暗号化キー

 

-target_path (データ移行後のファイル)

-target_pathは、デー移行が完了したファイルの保存場所を指定します。

(-target_pathなどのオプションについては、次回ブログで検証します。)

 

とりあえず使ってみる

とりあえず使ってみたいと思います。
用意したデータは、日本郵便のHPからダウンロードできる郵便番号簿のCSVデータです。このデータをFileMakerに変換したファイルを使用します。
全国一括データを使用したので、124,184レコードのファイルができました。
ファイルサイズは、34.7MBになりました。

では、できた KEN_ALL.fmp12 ファイルを移行元にし、
ファイルメニュー>名前を付けて保存… を実行し、
タイプを データなしのコピー にして、KEN_ALL (コピー).fmp12 というクローンファイルを作成しました。

1_1

 

ターミナルの操作

ターミナルを立ち上げます。
1_2

まずディレクトリを、FileMaker data migration tool のディレクトリまで移動します。
cdと入力後、フォルダをターミナルウインドウにドラッグすると、パスが入力されます。

cd /Users/<ユーザ名>/Desktop/MigrationTool 

ディレクトリ移動後に、下記コマンドを実行すると、ヘルプが参照できます。

./FMDataMigration /?

1_3
では、ヘルプにしたがって、コマンドを実行してみます。

./FMDataMigration  
-src_path /Users/<ユーザ名>/Desktop/MigrationTool/KEN_ALL.fmp12 
-clone_path /Users/<ユーザ名>/Desktop/MigrationTool/KEN_ALL\ \(コピー\).fmp12
(スペースや、括弧にはバックスラッシュが必要です。)

実行してみました。

1_5

今回は、-target_path を指定しなかったので、同じディレクトリに、KEN_ALL migrated.fmp12 (srcファイル名に”migrated”がつく)という名前のファイルが作成されました。

時間ですが、124,184レコード0:00:04 で移行できました。とても早いです。
普通にインポートを実行すると、0:00:14 かかっています。

 

シリアル値の自動入力の次の値について

「1Src」「2Clone」「3Target」というフォルダを用意し、
「1Src」に、ソースファイル(データ移行元)を保存、
「2Clone」に、クローンファイル(データなしのコピー)を用意しました。

フィールド変更
フィールド Src clone
「f1」フィールド シリアル値の自動入力(次の値:1000) シリアル値の自動入力(次の値:1)
./FMDataMigration  
-src_path /Users/<ユーザ名>/Desktop/MigrationTool/1Src/KEN_ALL.fmp12 
-clone_path /Users/<ユーザ名>/Desktop/MigrationTool/2Clone/KEN_ALL.fmp12 
-target_path /Users/<ユーザ名>/Desktop/MigrationTool/3Target/KEN_ALL.fmp12 
-v 
結果 Migratedファイルに、自動入力の次の値が設定されました。
フィールド Src Migrated メモ
「f1」フィールド シリアル値の自動入力(次の値:1000) シリアル値の自動入力(次の値:1000) Migratedファイルに自動入力の設定が反映しました。

※ 重要 ※

ただし、Srcファイルにシリアル値の自動入力が設定されていますが、Cloneファイルには設定されていない場合、Migratedファイルには、シリアル値の設定はされませんでした。

 

フィールドマッピング について

フィールドについて検証してみます。
Cloneファイルの「f1」フィールドの名前を「test1」というフィールド名に変更してみます。

フィールド変更
フィールド Src clone メモ
「f1」フィールド f1 test1 cloneのフィールド名「f1」→「test1」に変更しました。
./FMDataMigration  
-src_path /Users/<ユーザ名>/Desktop/MigrationTool/1Src/KEN_ALL.fmp12 
-clone_path /Users/<ユーザ名>/Desktop/MigrationTool/2Clone/KEN_ALL.fmp12 
-target_path /Users/<ユーザ名>/Desktop/MigrationTool/3Target/KEN_ALL.fmp12 
-v 
結果 フィールドの内部IDがあっていれば、データは移行されました。
フィールド Src Migrated メモ
「f1」フィールド f1 test1 Src「f1」→ Migrated「test1」にインポートされました。

では、もう少し検証します。Cloneファイルで、「f1」→ 「test1」にフィールド名を変更後、さらに「f1」フィールドを追加してみます。
これで、Srcファイルにも、Cloneファイルにも、「f1」フィールドはありますが、フィールド内部IDは違います。

フィールド変更
フィールド Src clone メモ
「f1」フィールド f1 test1 cloneのフィールド名「f1」→「test1」に変更しました。
フィールド追加 なし f1 cloneのファイルに「f1」というフィールドを追加しました。
./FMDataMigration  
-src_path /Users/<ユーザ名>/Desktop/MigrationTool/1Src/KEN_ALL.fmp12 
-clone_path /Users/<ユーザ名>/Desktop/MigrationTool/2Clone/KEN_ALL.fmp12 
-target_path /Users/<ユーザ名>/Desktop/MigrationTool/3Target/KEN_ALL.fmp12 
-v 
結果 フィールドの内部IDがあっていても、フィールド名が優先されました。
フィールド Src Migrated メモ
「f1」フィールド f1 test1 Src「f1」→ Migrated「test1」にインポートされませんでした。
フィールド追加 なし f1 Src「f1」→ Migrated「f1」にインポートされました。

 

確認できたこと

フィールドマッピングでは、まずフィールド名が優先され、その後フィールドIDが優先されます。
ということは、開発時に、「もう使っていないフィールドだから、フィールド名を変更して別のフィールドとして使用しよう」 というような開発をすると、データ移行時に思わぬデータが入ってしまうことが考えられます。
気をつけましょう!

 

まとめ

FileMaker data migration tool は、とても高速にデータを移行できました。
このスピードと手軽さを考えると、このツールのためだけに、 FDS(FileMaker Developer Subscription) を購入してもいいぐらい便利なツールであることがわかります。

次回、この FileMaker data migration tool のオプションを、もう少し深く検証してみたいと思います。