先日Monacaバックエンドが終了するのに伴い、Monacaバックエンドのエクスポートデータを移行できるツールを開発しました。こちらはJSONから移行できるツールですが、CSVデータをインポートできるツールが欲しいという声も強かったので、同様のツールを開発しました。 この記事では、CSVインポートツールの解説をします。
ツールのURLについて
CSVインポートツールはこちらにデプロイしています。
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インポートツールにドラッグ&ドロップします。
規定のカラム名は次のように変更されるので注意してください。
- 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ブラウザだけで使えるのが利点です。バックアップからの復旧であったり、デバイストークンの移行などに役立ててください。