使用CSV批量上传到Azure存储
我遇到了将大型csvfile upload到Azure的表存储的问题,因为它似乎是从数据stream中如此快速地传输数据,以至于无法正确上传或引发大量超时错误。
这是我现在的代码:
var fs = require('fs'); var csv = require('csv'); var azure = require('azure'); var AZURE_STORAGE_ACCOUNT = "my storage account"; var AZURE_STORAGE_ACCESS_KEY = "my access key"; var tableService = azure.createTableService(AZURE_STORAGE_ACCOUNT,AZURE_STORAGE_ACCESS_KEY); var count = 150000; var uploadCount =1; var counterror = 1; tableService.createTableIfNotExists('newallactorstable', function(error){ if(!error){ console.log("Table created / located"); } else { console.log("error"); } }); csv() .from.path(__dirname+'/actorsb-c.csv', {delimiter: '\t'}) .transform( function(row){ row.unshift(row.pop()); return row; }) .on('record', function(row,index){ //Output plane carrier, arrival delay and departure delay //console.log('Actor:' + row[0]); var actorsUpload = { PartitionKey : 'actors' , RowKey : count.toString() , Actors : row[0] }; tableService.insertEntity('newallactorstable', actorsUpload, function(error){ if(!error){ console.log("Added: " + uploadCount); } else { console.log(error) } }); count++ }) .on('close', function(count){ console.log('Number of lines: '+count); }) .on('error', function(error){ console.log(error.message); });
CSV文件大约是800MB。
我知道要解决这个问题,我可能需要批量发送数据,但我几乎不知道该怎么做。
我不知道azure包和CSV包,但是我build议你使用stream上传文件。 如果将文件保存到驱动器,则可以从中创build读取stream ,然后使用createBlockBlobFromStream将该stream上传到azure色。 这个问题在这里redirect我。 我build议你看看,因为它处理编码。 代码提供了一种将文件转换为base64string的方法,但是我有这样的想法,可以使用节点更高效地完成。 但是我将不得不考虑这一点。
嗯我build议将您的file upload到blob存储,您可以参考您的表存储中的blob URI。 块blob选项给你一个简单的批量上传方式。
- 您无权查看Azure Ionic App的此目录或页面
- “实施我。 未知的标准input文件types!“与flickrapi错误
- 部署到云时,无法将实体添加到node.js中的azure色存储表中?
- 如何在Javascript中使用承诺/链接与Azure移动服务自定义API
- 我可以从Azurefunction的单个运行中排列多个项目吗?
- Cordova Azure – 错误请求 – types错误:无法读取未定义的属性'listRegistrationsByTag'
- Node.js应用程序的Publish-AzureServiceProject命令失败
- Cosmos DB:MongoDBsorting查询返回空白结果集
- 如何使用OIDCStrategy检索的accessToken来遍历AzuregraphicsAPI?