ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

CSVでデータ移行できるツールを開発しました

f:id:mbaasdevrel:20201014165227p:plain

先日Monacaバックエンドが終了するのに伴い、Monacaバックエンドのエクスポートデータを移行できるツールを開発しました。こちらはJSONから移行できるツールですが、CSVデータをインポートできるツールが欲しいという声も強かったので、同様のツールを開発しました。 この記事では、CSVインポートツールの解説をします。

ツールのURLについて

CSVインポートツールはこちらにデプロイしています。

f:id:mbaasdevrel:20201014165227p:plain

https://keen-mcnulty-55005f.netlify.app/

アプリケーションキーやクライアントキーを入力する必要がありますが、ログには残していません。もし気になる場合にはNCMBMania/csv_import: CSVをNCMBにインポートするWebアプリケーションですを自分でデプロイして利用することもできます。ローカルで動かすことも可能です。

使い方

まず移行させるデータをCSVで用意してください。たとえば次のようになるでしょう。一行目はヘッダー列で、これがカラム名として取り込まれます。

objectId createDate updateDate message bool date ary obj num
AAAAAA 2020/10/13 16:45:00 2020/10/13 16:45:00 Hello 2020/10/13 16:45:00 [1, 2, 3] {"a": "b"} 100
BBBBBB 2020/10/13 16:45:00 2020/10/13 16:45:00 TRUE {"c": } aaa
CCCCCC 2020/10/13 16:45:00 2020/10/13 16:45:00 改行あり

改行
22 aaa [1] 300

このデータを (クラス名).csv としてCSVインポートツールにドラッグ&ドロップします。

f:id:mbaasdevrel:20201014165309p:plain

規定のカラム名は次のように変更されるので注意してください。

  • objectId → oldObjectId
  • createDate → oldCreateDate
  • updateDate → oldUpdateDate

対応しているのはデータストア、そしてInstallationsになります。Installations(デバイストークン)をインポートする場合には、下の方の枠にドラッグ&ドロップします。Installationsに取り込む場合には、deviceTokenおよびdeviceTypeが必須です。ほかの項目はデータストア同様に自由です。

deviceToken deviceType
aaaaaaaaaaa ios
bbbbbbbbbbb android

型について

CSVファイルでは型が利用できません。そのためすべて文字列として取り込まれてしまいます。そこで、ヘッダー列で : を使って型指定できるようにしました。例えば次のように指定します。

objectId createDate updateDate message bool:Boolean date:Date ary:Array obj:Object num:Number
AAAAAA 2020/10/13 16:45:00 2020/10/13 16:45:00 Hello 2020/10/13 16:45:00 [1, 2, 3] {"a": "b"} 100
BBBBBB 2020/10/13 16:45:00 2020/10/13 16:45:00 TRUE {"c": } aaa
CCCCCC 2020/10/13 16:45:00 2020/10/13 16:45:00 改行あり

改行
22 aaa [1] 300

現在対応している型は次の通りです。

  • String : 文字列型(デフォルト)
  • Boolean : 真偽値。TRUEならばtrue、FALSEであればfalseとして取り込み。True/true/TRUEのいずれでも可。
  • Date : 日付型。日付として正しい内容であれば、取り込み。
  • Number : 数値型。数値として正しい内容であれば、取り込み。
  • Array または Object : JSONとして正しい型であれば取り込み。

これはヘッダー列で決まるので、mBaaSのデータストアのように行ごとに型変更はできませんのでご注意ください。一部の行だけデータ型を変える場合には、一旦取り込んだ後で変更してください。

データ処理件数について

データはすべてクライアントサイドで処理されます。mBaaS以外のサーバにはアップロードしません。そのためローカルコンピュータのメモリ上限に左右されます。数10MBくらいのCSVであれば問題ないでしょう。データ登録も1行ずつ順番に行います。時間はかかりますが、ネットワークが継続されている限りは問題なく動作するはずです。

まとめ

以前CLIベースのインポートツールは作りましたが、こちらはWebブラウザだけで使えるのが利点です。バックアップからの復旧であったり、デバイストークンの移行などに役立ててください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。