概要
外から見えるサーバに置かれたCSVファイルを、URLを指定してXanoにインポートします。
今回はBubbleサーバに置かれたファイルを使い、BubbleにCSVファイルがアップロードされたタイミングでインポートします。
Xanoとは
DBaaS(Database as a Service)の一つで、コーディングせずにDBやDB操作のAPIを作成できます。
ホームページは、https://www.xano.com/ です。
Xenoの設定
準備
-
上記ホームページからアカウントを作成します。
- 無料プランは、100,000レコードまでという制限があります。価格表をご覧ください。
-
ログインして、インスタンス、ワークスペースを作成します。
インポート先のテーブルを作成
- 左メニューの「Database」を選択します。
- 右上の「Add Table」より、インポート先のテーブルを作成します。今回は「members」というテーブルを作りました。
- idカラム、created_atカラムは自動的に作成されます。このカラムは削除できません。
- 必要なカラムを追加します。
- 型はText, Integer, Object, Table Referenceなどが選択できます。
- カラム名は英数字と半角記号のみ使用できます。日本語は使用できません。
インポート用APIを作成
- 左メニューの「API」を選択します。
- API Groupを作成します。
- 右上の「Add API Endpoint」から、APIを作成します。
- typeは「Start from scratch」
- Name、Verb(GET、POSTなどから1つを選択)を指定します。今回はPOSTでURLを投げる方式にします。
- APIの中身を作成します。
- 1.Input
- Text型で、「csvurl」というパラメタ名にします。必須にしたいので、Requiredを「yes」にします。
- 2.Function Stack
- 「External API Request」(API Request To)で、指定されたURLからCSVデータを取得します。
- urlには、1.Inputで指定した「csvurl」を指定します。
- Outputは、デフォルトのまま「api_1」とします。
- 「Database Requests」ー「Database Transaction」で、以下の2つをトランザクションでくくって、両方成功、または両方失敗になるようにします。
- 「Add function」で、トランザクションに入れる2つの処理を指定します。
- 「Database Requests」ー「Clear All Records」で、membersテーブルを空にします。IDを1から振り直す場合は、reset=trueを指定します。
- 「Database Requests」ー「Add Multiple Records in Bulk」(Add Bulk Records)で、 membersテーブルに一括登録します。
- 「items」に、api_1.response.result」と指定します。
- 「Return variable」は、デフォルトのまま「members_2」とします。
- 「External API Request」(API Request To)で、指定されたURLからCSVデータを取得します。
- 3.Response
- RETURNに「var:members_2」を選択します。他はデフォルトのまま「AS Self」とします。
- 1.Input
Bubbleの設定
画面
- File Uploaderを設置し、CSVファイルをBubbleのサーバにアップロードできるようにします。
Workflow
-
必要に応じて、上記でアップロードしたCSVファイルのカラム名やカラムの並び順を変更し、JSONで保存ます。
-
CSV chop and encodeというBubbleプラグインを作りました。
- CSVファイルがアップロードされた際に、指定したカラムだけ取り出し、カラム名や順序や文字コードを変更し、100行ごと(変更可)に区切ってJSONファイルに出力します
-
CSV chop and encodeというBubbleプラグインを作りました。
-
上記で作成したXanoのAPIにそのJSONファイルのURLを渡します。
- API Connectorで、上記のJSONファイルのURLを上記のAPIにPOSTで渡します。
動作確認
- Bubbleからファイルをアップロードして、Xanoのテーブルが書き換わることを確認します。
注意
- 上記のままでは、URLが分かれば誰でもCSVファイルをアップロードできてしまします。Bubble、XanoのAPIともに、認証機能を付けたり、APIキーを使ったり、IPアドレスを判断するなど、セキュリティ対策をとってください。