Javascript 将海量数据上载到Firebase
我试图将我的CSV数据上传到Firebase,但它抛出了一个奇怪的错误。我对JavaScript不太熟悉,所以这可能是问题的一部分 这是我要上传的数据:Javascript 将海量数据上载到Firebase,javascript,jquery,csv,firebase,Javascript,Jquery,Csv,Firebase,我试图将我的CSV数据上传到Firebase,但它抛出了一个奇怪的错误。我对JavaScript不太熟悉,所以这可能是问题的一部分 这是我要上传的数据: 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 EUGE
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"
我没有使用任何花哨的方式尝试上传文档,这似乎是以我想要的方式上传所有内容的最快方式:
<!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>
$(函数(){
var myFirebaseRef=新的Firebase(“https://.firebaseio.com/coordinates");
var onComplete=函数(错误){
如果(错误){
console.log('同步失败:'+错误);
}否则{
log('同步成功');
}
};
$(“#上载”).bind(“单击”),函数(){
var regex=/^([a-zA-Z0-9\s\\\.\-:])+(.csv|.txt)$/;
if(regex.test($(“#fileUpload”).val().toLowerCase()){
if(typeof(FileReader)!=“未定义”){
var reader=new FileReader();
reader.onload=函数(e){
var rows=e.target.result.split(“\n”);
对于(变量i=0;i
以下是数据库中显示的所有内容:
它只上传一行,但“同步成功”总是在我的控制台中打印出来
我希望它上传每一行,因为我的原始数据大约有90000行长。帮助?对于任何在代码中寻找答案的人来说,这就是工作模式
<!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>
$(函数(){
var myFirebaseRef=新的Firebase(“https://.firebaseio.com/coordinates");
$(“#上载”).bind(“单击”),函数(){
var regex=/^([a-zA-Z0-9\s\\\.\-:])+(.csv|.txt)$/;
if(regex.test($(“#fileUpload”).val().toLowerCase()){
if(typeof(FileReader)!=“未定义”){
var reader=new FileReader();
reader.onload=函数(e){
var rows=e.target.result.split(“\n”);
对于(变量i=0;i
如果所有单元格[0]
都等于704,您希望得到什么结果???它只上载一行,而不是整个文档。当我用控制台打印替换firebase上载时,它会打印所有内容。关于我如何处理firebase调用的一些信息阻止了此代码中的大规模上载,但因为您总是设置相同的项,覆盖了前一项,704==704。我不是火箭筒,但你可能想推它:嗯。。。。天哪,我才意识到。谢谢你向我指出这一点。直到最后,我才想到它会用新数据覆盖save。你知道有什么补救办法吗?上面写着“等到最后一次firebase呼叫完成后再继续”?你可能不是morron。。。很高兴你已经修复了它和thx张贴相关的答案。这对任何未来的读者都会很有帮助。