###前提・実現したいこと
現在、RDBにあるデータをFirebaseのCloud Firestore
にデータ移行したいと考えています。
RDBのデータをCSVファイルに書き出すこところができています。
###詰まっていること、悩んでいること
Node.js
で移行スクリプトを書いているのですが、データ移行の際に気をつけることやエラーハンドリングについてどのようにしたら良いのかわかっていません。
- dbへの書き込み処理でエラーを起こした際の対処
- データ移行について一般的に考慮すべきこと
- csvから読み出したデータの扱い方について、下に示すように
array[0]
のように扱うよりももっと良いベストプラクティスがあるのではないか?
などを知りたいと思っています。
現在、いかに示すスクリプトを実行するとほとんどのデータは書き込みできているのですが、いくつかのデータでは以下のようなエラーが出ます。
(node:97867) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 598): Error: Deadline Exceeded
###該当のソースコード
csvファイルは以下のようになっています。(参考ファイルです。)
id,名前,性別,住所
(住所が欠損しているデータがあるとしています)
users.csv
1 21,Sam,male,Saitama 32,Tom,male,Tokyo 43,Taylor,female 5
このようなcsvファイルが900行近くあり、それを全て書き込み処理をしたいと考えています。
Node.js
1const firebaseAdmin = require('firebase-admin') 2 3// 認証設定 4const serviceAccount = require('./env-firebase-dev-firebase-xxx.json') 5firebaseAdmin.initializeApp({ 6 credential: firebaseAdmin.credential.cert(serviceAccount), 7 databaseURL: process.env.FIREBASE_DATABASE_URL 8}) 9 10const db = firebaseAdmin.firestore() 11const usersRef = db.collection('users') 12 13// csvファイルの読み込み設定 14const fs = require('fs') 15const csvSync = require('csv-parse/lib/sync') 16const file = 'dump.csv' 17let data = fs.readFileSync(file) 18let res = csvSync(data) 19 20// 書き込み処理 21res.forEach(function(user) { 22 #addでレコードを新規作成する 23 usersRef.add({ 24 id: Number(user[0]), 25 name: user[1], 26 sex: user[2], 27 address: user[3] 28 }) 29}, this); 30
よろしくお願いします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/02 13:12
2017/11/02 13:47