在ASP.NET内部有一个2 GB的寻址空间,但实际上你只有不到1 GB的上传空间(参见http://support.microsoft.com/?id=295626).此外,IIS 7的上限为30 MB(请参阅http://www.iislogs.com/steveschofield/iis7-post-40-adjusting-file-upload-size-in-iis7),您可能必须运行
appcmd set config "My Site/MyApp" -section:requestFiltering -requestLimits.maxAllowedContentLength:104857600 -commitpath:apphost
Run Code Online (Sandbox Code Playgroud)
在服务器上超过这个30 MB的限制.但是如何在Azure服务器上运行它?
另外,根据http://support.microsoft.com/?id=295626
在上载过程中,ASP.NET会在用户将文件保存到磁盘之前将整个文件加载到内存中.
,如果很多用户一次上传大文件,我会很快耗尽内存限制.在我的下面的代码中,我使用流,但我猜测整个文件无论如何都先在内存中上传.是这样的吗?
using System;
using System.Web.Security;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
namespace WebPages
{
public partial class Upload : System.Web.UI.Page
{
CloudBlobClient BlobClient = null;
CloudBlobContainer BlobContainer = null;
void InitBlob()
{
// Setup the connection to Windows Azure Storage
var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
BlobClient = storageAccount.CreateCloudBlobClient();
// Get and create the container
BlobContainer = BlobClient.GetContainerReference("publicfiles");
}
protected void Page_Load(object …Run Code Online (Sandbox Code Playgroud) 我希望在可能不超过 10 分钟左右的时间内将大小不超过 50MB 的 .csv 文件批量插入 Azure SQL 数据库中。
但是,批量插入不适用于云。正如另一个线程中指出的,BCP 是一个可行的解决方案,但它需要将数据批量插入本地数据库。然而,这在 PaaS 基础设施中不是一个选项,因为在操作系统级别没有控制,并且无法创建和管理数据库。
目前,使用标准 S3:100 DTU、250 GB Azure SQL 数据库逐个上传 131KB 的 .csv 需要 10 分钟以上。如何将上传速度提升至少一个数量级?
import pandas as pd
import sqlalchemy
table = pd.Dataframe(<your_data_here>)
sql_driver = <driver>
sql_server = <server>
sql_user = <user>
sql_pass = <password>
sql_db = <database_name>
sql_conn = sqlalchemy.create_engine(
'mssql+pyodbc://'+sql_user+':'+sql_pass+'@'+sql_server+'/'+sql_db+'?driver='+sql_driver)
table.to_sql('table_name', con=sql_conn)
Run Code Online (Sandbox Code Playgroud)