2016-04-08 40 views
2

Ich versuche, meine CSV-Daten in Firebase hochzuladen, aber es hat einen seltsamen Fehler verursacht. Ich bin nicht so vertraut mit JavaScript, wie ich möchte, so dass dies ein Teil des Problems sein könnte.Massendaten in Firebase hochladen

Dies sind die Daten, die ich hochladen mag:

704,STANDARD,PARC PARQUE,PR,NOT ACCEPTABLE,17.96,-66.22,"Parc Parque, PR" 
704,STANDARD,SECT LANAUSSE,PR,NOT ACCEPTABLE,17.96,-66.22,"Sect Lanausse, PR" 
704,STANDARD,URB EUGENE RICE,PR,NOT ACCEPTABLE,17.96,-66.22,"Urb Eugene Rice, PR" 
704,STANDARD,URB GONZALEZ,PR,NOT ACCEPTABLE,17.96,-66.22,"Urb Gonzalez, PR" 

ich keine Lust verwendet habe, alles zu versuchen, das Dokument zu laden, das ist wie der schnellste Weg schien alles im Stil Ich mag hochgeladen zu bekommen:

<!DOCTYPE html> 

<head> 
</head> 

<body> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script src="https://cdn.firebase.com/js/client/2.4.2/firebase.js"></script> 
<script type="text/javascript"> 
$(function() { 
    var myFirebaseRef = new Firebase("https://<firebasetag>.firebaseio.com/coordinates"); 

    var onComplete = function(error) { 
     if (error) { 
     console.log('Synchronization failed: ' + error); 
     } else { 
     console.log('Synchronization succeeded'); 
     } 
    }; 

    $("#upload").bind("click", function() { 
     var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/; 
     if (regex.test($("#fileUpload").val().toLowerCase())) { 
      if (typeof (FileReader) != "undefined") { 
       var reader = new FileReader(); 
       reader.onload = function (e) { 
        var rows = e.target.result.split("\n"); 
        for (var i = 0; i < rows.length; i++) { 
         var cells = rows[i].split(","); 
         myFirebaseRef.set({ 
          [cells[0]]: { 
           zipcodetype: cells[1], 
           city: cells[2], 
           state: cells[3], 
           locationtype: cells[4], 
           latitude: cells[5], 
           longitude: cells[6], 
           locationttext: cells[7] 
          } 
         }, onComplete);      
        } 
       } 
       reader.readAsText($("#fileUpload")[0].files[0]); 
      } else { 
       alert("This browser does not support HTML5."); 
      } 
     } else { 
      alert("Please upload a valid CSV file."); 
     } 
    }); 
}); 
</script> 
<input type="file" id="fileUpload" /> 
<input type="button" id="upload" value="Upload" /> 
</div> 

</body> 

<html> 

das ist alles, was in der Datenbank auftaucht:

enter image description here

Es wird nur eine Zeile hochgeladen, aber "Synchronisation erfolgreich" wird immer in meiner Konsole ausgedruckt.

Ich möchte es jede Zeile hochladen, da meine ursprünglichen Daten etwa 90.000 Zeilen lang ist. Hilfe?

+0

Wenn alle 'Zellen [0]' gleich 704 ist, was erwarten Sie als Ergebnis ??? –

+0

Es wird nur eine Zeile hochgeladen, nicht das gesamte Dokument. Wenn ich den Firebase-Upload durch einen Konsolendruck ersetze, wird alles gedruckt. Etwas darüber, wie ich den Firebase Anruf handhabe verhindert Massen-Upload in diesem Code – booky99

+1

Aber weil Sie immer das gleiche Element setzen, überschreiben Ny vorherigen, 704 === 704. Ich bin kein Firebase-Typ, aber Sie wollen wahrscheinlich drücken stattdessen: https://www.firebase.com/docs/web/api/firebase/push.html –

Antwort

2

Für alle, die nach der Antwort im Code suchen, ist dies das Arbeitsmodell.

<!DOCTYPE html> 

<head> 
</head> 

<body> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script src="https://cdn.firebase.com/js/client/2.4.2/firebase.js"></script> 
<script type="text/javascript"> 
$(function() { 
    var myFirebaseRef = new Firebase("https://<firebaseid>.firebaseio.com/coordinates"); 

    $("#upload").bind("click", function() { 
     var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/; 
     if (regex.test($("#fileUpload").val().toLowerCase())) { 
      if (typeof (FileReader) != "undefined") { 
       var reader = new FileReader(); 
       reader.onload = function (e) { 
        var rows = e.target.result.split("\n"); 
        for (var i = 0; i < rows.length; i++) { 
         var cells = rows[i].split(","); 
         myFirebaseRef.push({ 
          [cells[0]]: { 
           zipcodetype: cells[1], 
           city: cells[2], 
           state: cells[3], 
           locationtype: cells[4], 
           latitude: cells[5], 
           longitude: cells[6], 
           locationttext: cells[7] 
          } 
         });      
        } 
       } 
       reader.readAsText($("#fileUpload")[0].files[0]); 
      } else { 
       alert("This browser does not support HTML5."); 
      } 
     } else { 
      alert("Please upload a valid CSV file."); 
     } 
    }); 
}); 
</script> 
<input type="file" id="fileUpload" /> 
<input type="button" id="upload" value="Upload" /> 
</div> 

</body> 

<html> 
Verwandte Themen