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