У меня есть очень большой плоский файл ASCII (1,5 миллиона строк), который мне нужно прочитать.Это в основном список деталей от производителя.Я хотел бы использовать Firestore для его размещения.
Как файл .csv, он весит 250 ГБ.Мне удалось преобразовать его в файл JSON с помощью Windows PowerShell, и теперь он весит более 1 ГБ.
Как получить эти данные в Firestore?Я думаю, что Admin SDK и пакетная запись будет путь.Итак, я получил все настройки и собрал скрипт узла, но документация Admin SDK для Firestore тонкая.
Мой скрипт узла ниже, но выдает ошибку FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
var admin = require("firebase-admin");
var serviceAccount = require("./--------------------------.json");
var fs = require('fs');
var myCsvFile = "./global.csv"
var parse = require('csv-parse');
require('should');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://g--------b.firebaseio.com"
});
var firestore = admin.firestore();
var writeBatch = firestore.batch();
var myRef = firestore.collection("foo").doc();
var obj = {};
fs.createReadStream(myCsvFile)
.pipe(parse({delimiter: '|',relax_column_count:true,quote: ''}))
.on('data', function(csvrow) {
if(csvrow[1]){
obj.family = csvrow[1];
}
if(csvrow[2]){
obj.series = csvrow[2];
}
if(csvrow[3]){
obj.sku = csvrow[3];
}
if(csvrow[5]){
obj.description = csvrow[5];
}
if(csvrow[7]){
obj.price = csvrow[7];
}
writeBatch.set(myRef, obj);
})
.on('end',function() {
writeBatch.commit()
});