firebase - CSV या JSON को क्लाउड फायरस्टार में आग लगाने के लिए कैसे आयात करें




google-cloud-firestore (7)

क्या CSV या JSON को फायरबेस रियलटाइम डेटाबेस में क्लाउड फायरस्टार की तरह आयात करने का कोई तरीका है?


1 - केवल संग्रह आयात करना

यदि आपके संग्रह के नाम न केवल संख्याओं से बने हैं, तो आप दस्तावेज़ के नाम को निम्नानुसार परिभाषित कर सकते हैं।


    ...
    ...

    } else {
        // Collection's length of is always odd.
        for (const key in data) {
          // // Resolve each collection.

          // If key is a number it means that it is not a collection
          // The variable id in this case will be the name of the document field or you 
          // can generate randomly
          let id = !isNaN(key) ? data[key].id : key;

          await resolve(data[key], [...path, id]);
        }
      }
    }

2 - संग्रह और उप-संग्रह आयात करें

उसी तरह जैसे कि ऊपर के उदाहरण में, उप-संग्रह के नाम में केवल संख्याएँ नहीं हो सकती हैं।

    ...
    ...

    for (const key in data) {
      // Resolve each collection and remove it from document data.
      if (isCollection(data[key], [...path, key])) {
        // Remove a collection from the document data.
        delete documentData[key];

        // If key is a number it means that it is not a collection
        // The variable id in this case will be the name of the document field or you 
        // can generate randomly
        let id = !isNaN(key) ? data[key].id : key;

        // Resolve a colleciton.
        resolve(data[key], [...path, id]);
      }
    }

    ...
    ...

नोट: @Maciej Caputa के कोड में परिवर्तन


अब तक, आप नहीं कर सकते .. फायरस्टार संरचनाओं को एक अलग प्रारूप में डेटा देता है, जो कि संग्रह का उपयोग करके है और प्रत्येक संग्रह में दस्तावेजों की एक श्रृंखला है जो तब JSON प्रारूप में संग्रहीत की जाती है .. भविष्य में वे JSON को परिवर्तित करने के लिए एक उपकरण बना सकते हैं। आग्नेयास्त्र में .. संदर्भ के लिए इसे देखें

: https://cloud.google.com/firestore/docs/concepts/structure-data

**** संपादित करें: ****

आप इस प्रक्रिया को कुछ हद तक स्वचालित कर सकते हैं, अर्थात, एक नकली सॉफ्टवेयर लिखें, जो आपके CSV या JSON डेटा के क्षेत्रों को केवल आपके क्लाउड फायरस्टार DB में धकेलता है। मैंने अपने पूरे डेटाबेस को अपने एक साधारण ऐप के रूप में माइग्रेट किया, जिसने मेरे DB को पुनः प्राप्त किया और फायरस्टार पर धकेल दिया


ऐसा नहीं है, आपको इस समय अपनी स्क्रिप्ट लिखने की आवश्यकता होगी।


मैंने Maciej Caputa द्वारा प्रदान किए गए सामान्य समाधान का उपयोग किया। धन्यवाद (:

यहाँ कुछ संकेत दिए गए हैं। यह मानते हुए कि आपके पास उस समाधान के अंदर फ़ंक्शन फ़ोल्डर में आवश्यक फायरबेस नोड मॉड्यूल के साथ एक ईओण फायरबेस एप्लिकेशन इंस्टॉल है। यह एक मानक आयोनिक फायरबेस स्थापित है। मैंने स्क्रिप्ट और डेटा को एक ही स्तर पर रखने के लिए एक आयात फ़ोल्डर बनाया।

फ़ोल्डर पदानुक्रम

myIonicApp
    functions
        node_modules
            firebase-admin
ImportFolder
    script.js
    FirebaseIonicTest-a1b2c3d4e5.json
    fileToImport.json

स्क्रिप्ट पैरामीटर

const admin = require('../myIonicApp/functions/node_modules/firebase-admin'); //path to firebase-admin module
const serviceAccount = require("./FirebaseTest-xxxxxxxxxx.json"); //service account key file

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://fir-test-xxxxxx.firebaseio.com" //Your domain from the hosting tab
});

सेवा खाता कुंजी फ़ाइल बनाना

  • अपने प्रोजेक्ट के लिए फायरबेस कंसोल में, प्रोजेक्ट ओवरव्यू आइटम के बगल में, गियर आइकन पर क्लिक करें और उपयोगकर्ता और अनुमतियां चुनें
  • स्क्रीन के निचले भाग में, उन्नत अनुमति सेटिंग्स पर क्लिक करें

  • यह Google क्लाउड प्लेटफ़ॉर्म कंसोल के लिए एक और टैब खोलता है
  • बाईं ओर सेवा लेखा आइटम का चयन करें
  • किसी मौजूदा सेवा खाते के लिए एक सेवा खाता बनाएँ

मैंने बस App इंजन डिफ़ॉल्ट सेवा खाते में एक कुंजी जोड़ी है

बनाएँ कुंजी फ़ंक्शन JSON फ़ाइल की कुंजी डाउनलोड करने की पेशकश करेगा

JSON डेटा संरचना

प्रदान की गई स्क्रिप्ट का उपयोग करने के लिए, डेटा संरचना निम्नानुसार होनी चाहिए:

{
  "myCollection" : {
    "UniqueKey1" : {
      "field1" : "foo",
      "field2" : "bar"
    },{
    "UniqueKey2" : {
      "field1" : "fog",
      "field2" : "buzz"
    }...
}

सन्दर्भ के लिए। मैंने एक फ़ंक्शन लिखा है जो फायरस्टार में डेटा आयात और निर्यात करने में मदद करता है।

https://github.com/dalenguyen/firestore-import-export


https://gist.github.com/JoeRoddy/1c706b77ca676bfc0983880f6e9aa8c8

यह वस्तुओं की एक वस्तु के लिए काम करना चाहिए (आमतौर पर पुराने फायरबेस जसन की स्थापना कैसे की जाती है)। आप उस कोड को एक ऐप में जोड़ सकते हैं जो पहले से ही फायरस्टार के साथ कॉन्फ़िगर किया गया है।

बस सुनिश्चित करें कि आपके पास सही JSON फ़ाइल की ओर इशारा करते हैं।

सौभाग्य!


var admin = require('firebase-admin');

var serviceAccount = require('./serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://csvread-d149c.firebaseio.com'
});

const csv = require('csv-parser');  
const fs = require('fs');

const firestore = admin.firestore();

// CSV FILE data.csv

// Name,Surname,Age,Gender
// John,Snow,26,M  
// Clair,White,33,F  
// Fancy,Brown,78,F

fs.createReadStream('data.csv')  
  .pipe(csv())
  .on('data', (row) => {
    console.log(row);
    if(row) {
      firestore.collection('csv').add({
        name: row.Name,
        surname: row.Surname,
        age: row.Age,
        sex: row.Gender
      });
    }
    else {
      console.log('No data')
    }
  })
  .on('end', () => {
    console.log('CSV file successfully processed');
  });






google-cloud-firestore