2017-03-09 51 views
-1

我已經在Azure的linux虛擬機上建立了一個postgreSQL數據庫,並且我想要上傳到該數據庫的blob存儲中有一個.csv文件。在blob存儲中引用數據

但是,我找不到有關如何(甚至是否有可能)將存儲在blob存儲中的文件視爲文件系統的一部分的文檔,或者將文件從blob存儲傳輸到服務器也在Azure中運行。

我發現的所有參考文獻都是關於直接導入預構建的SQL Server虛擬機的,這不是我的問題。

任何人都可以提供的參考或其他幫助將不勝感激。

+0

Blob服務是存儲在Azure中的文件以正確的方式。你爲什麼要把它移到另一個服務/服務器上?我認爲你只需要將你的端點存儲在你的postgreSQL的某個表中 –

+0

@ThiagoCustodio我不想把它存儲在任何其他地方,我只是想知道如何引用它來獲取postgreSQL數據庫。我創建了表格,但我不知道如何將數據上傳到我的表格中。 –

+0

這已在衆多地方和答案中解決(例如我最近發佈的一個[here](http:// stackoverflow。com/a/42556761/272109)) - 您需要先將其複製到本地存儲器(例如VM上的本地磁盤),然後才能使用標準I/O庫將其打開。還有大量文檔用於將Azure存儲中的Blob複製到磁盤(每個發佈的語言SDK都支持此功能,以及PowerShell和CLI)。 –

回答

1

據我所知,PostgreSQL在其查詢中支持程序關鍵字。

所以我建議你可以用這個關鍵字來訪問blob存儲csv文件。

通常我們會用捲曲訪問該文件,你可以在下載以下網址: https://curl.haxx.se/download.html#Linux

更多細節,你可以參考遵循例子代碼:

COPY persons(first_name,last_name,dob,email) 
FROM PROGRAM 'C:\curl "https://yourstorageaccount.blob.core.windows.net/mycontainer/test2.csv?sv=2016-05-31&sr=c&sig=jtNRuzR7G98hHogHHZyKY9gYN0r%2FSgr2j78HGKihYlc%3D&st=2017-03-09T02%3A43%3A17Z&se=2017-03-11T02%3A43%3A17Z&sp=rl"'DELIMITER ',' CSV HEADER; 

的結果查詢像如下:

enter image description here

在這裏,我使用的SAS令牌至p保護我的BLOB文件。

如果您不想使用此標記,則可以在門戶中設置容器的權限。

象下面這樣: enter image description here

然後,你可以直接通過URL來訪問文件。這 鏈接: https://yourstorageaccount.blob.core.windows.net/mycontainer/test2.csv

如果你想使用SAS令牌來保護我的blob文件,你可以生成SAS令牌以下圖片所示:

enter image description here

的結果是這樣的 enter image description here

然後,您可以將此令牌添加到訪問blob url後面。

更多細節,你可以參考以下網站:

https://docs.microsoft.com/en-us/azure/storage/storage-dotnet-shared-access-signature-part-2

+0

非常感謝您提供詳細的答案,完美的工作! –