0

我需要构建一些功能,允许用户选择.csv文件并通过天蓝色的Web应用程序将其上传(数据)到我的数据库。由于没有可用的文件系统,我如何将.csv数据放入sql服务器数据库中的blob中?那里有任何例子吗?从.csv文件导入到azure数据库的功能

回答

1

由于theres没有可用的文件系统,我如何获取.csv数据到我的sql服务器数据库的blob?

如果我理解正确的话,你可以在上传CSV文件到一个临时文件夹保存在您的网页内容,或使用File System from Azure Web App(例如d:\homed:\local)临时存储csv文件。然后你可以利用SqlBulkCopy和这个CSV Reader库来一个简单的方法将csv数据导入到sql表中。这里是代码片段,你可以参考一下吧:

string connectionString = "Data Source=tcp:{server-name}.database.windows.net,1433;Initial Catalog={db-name};User ID={user-name};Password={pwd}"; 
string filename = "{the-path-of-your-csv-file-in-webapp}"; 
using (var conn = new SqlConnection(connectionString)) 
{ 
    conn.Open(); 
    var transaction = conn.BeginTransaction(); 
    try 
    { 
     using (StreamReader file = new StreamReader(filename)) 
     { 
      CsvReader csv = new CsvReader(file, true, ','); 
      SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, transaction); 
      copy.DestinationTableName = "TableForBulkData"; 
      copy.WriteToServer(csv); 
      transaction.Commit(); 
     } 
    } 
    catch (Exception ex) 
    { 
     transaction.Rollback(); 
    } 
} 

结果

enter image description here

UPDATE

由于Azure Web App sandbox提及文件系统限制/注意事项

每个Azure Web应用程序都有一个由Azure存储存储/支持的主目录。这个网络共享是应用程序存储其内容的地方。该目录可用于具有读/写访问权限的沙箱。

为了方便我们的客户,沙箱在内核模式下实现了动态符号链接,该链接将d:\ home映射到客户主目录。这样做是为了消除客户在访问网站时继续参考他们自己的网络共享路径的需要。 无论站点在哪里运行,或者在虚拟机上运行了多少个站点,都可以使用d:\ home访问其主目录。

你可以利用KUDU一个简单的方法来访问您的Web应用程序的内容如下:

enter image description here

+0

即时通讯相当新颖,我不认为有一个我们可以访问的文件系统,我认为这只是blob和表存储。这是在生产环境中可用吗? – proteus

+0

是否有任何“最佳实践”可用于将.csv文件中的数据上传到Azure? – proteus

+0

Web应用程序提供的文件系统可以在生产环境中使用。此外,如果csv文件很大,或者将csv导入db表的过程需要花费很多时间,我认为您可以利用WebJob和Azure存储来优化此方案。 –

0

如果您需要经常从的预置型文件系统上载.csv文件到Azure中,你可以考虑使用Azure数据工厂(ADF)。 ADF是一个基于云的全面管理的数据集成服务,能够从不同格式的30个不同数据源采集数据,并能够存入任何Azure数据存储服务(Blob,SQL DB,SQL DW,ADLS,文档数据库,Azure搜索)。以下是如何配置ADF管道以将文件从本地上传到Azure Blob的示例:https://docs.microsoft.com/en-us/azure/data-factory/data-factory-onprem-file-system-connector#json-examples-for-copying-data-to-and-from-file-system。我们强烈建议使用复制向导,这是一个基于GUI的创作向导,而不是使用JSON。请参阅本教程以获得使用复制数据向导创建管道的快速演练:https://docs.microsoft.com/en-us/azure/data-factory/data-factory-copy-data-wizard-tutorial