日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

将数据从 SQL Server 导入 Azure Storage Table

發布時間:2023/12/4 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将数据从 SQL Server 导入 Azure Storage Table 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方藍字關注“汪宇杰博客”

導語

最近有個需求要將數據存儲從 SQL Server 數據庫切換到 Azure Storage 中的 Table。然而不管是 SSMS 還是 Azure Portal 都沒有提供直接的導入功能,是不是又想自己寫程序去導數據了?其實不用!沒有點過數據庫天賦的我996了一個晚上,終于找到了點點鼠標就搞定的方法,今天分享給大家。

但首先要告誡大家的是,SQL Server 這樣的關系型數據庫和 Azure 提供的 NoSQL 服務概念不一樣。在進行操作之前,請研究并確保自己的業務真的適合 Storage Table (或 Cosmos Table),以免適得其反。

準備工作

你當然需要一個 Azure Storage Account,在其中建立空表,用于導入數據,例如:LinkTracking

下載安裝 Microsoft Azure Storage Explorer

https://azure.microsoft.com/en-us/features/storage-explorer/

下載安裝 SQL Server Management Studio (僅 Windows) 或 Azure Data Studio (跨平臺)

https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver15

導出數據

我們需要將 SQL Server 表中的數據導出為 CSV 格式,以便導入 Azure Storage Table。但要對數據做一些處理,不然就會爆,然后996。

以單表數據導出為例,Azure Storage Table 需要兩個必要字段:PartitionKey, RowKey。而 SQL Server 的表往往用一列或多列作為主鍵,并且沒有固定的名稱約束。因此,我們首先要處理的就是主鍵。

我的 LinkTracking 表使用 GUID 類型的 Id 作為主鍵,將其轉換為 RowKey。至于 PartitionKey,原始表中不存在,我們可以自己創造一個固定的字符串即可,比如 'LT996'。

通過簡單的 SELECT 語句就可以把 PartitionKey, RowKey 搞定:

SELECT

??? 'LT996' AS PartitionKey,

??? lt.Id AS RowKey

? ? -- 省略其他列

FROM LinkTracking lt

接著還有個福報要修,即 DateTime 類型的數據需要轉換為 ISO 8601 標準格式,不然導入數據的時候就會爆,并且只告訴你爆了,不告訴你原因,導致996。

ISO 8601時間日期格式可參考:https://en.wikipedia.org/wiki/ISO_8601

T-SQL 中轉換 ISO 8601 也很簡單:

CONVERT(char(30), DateTime數據,126)?

現在,最終的 SQL 語句為:

SELECT

??? 'LT996' AS PartitionKey,

??? lt.Id AS RowKey,

??? lt.LinkId, lt.UserAgent, lt.IpAddress,

??? CONVERT(char(30), lt.RequestTimeUtc,126) AS RequestTimeUtc

FROM LinkTracking lt

接下來我們就得把查詢結果導出到CSV文件了,不想996的話,有三種辦法:

小數據量,輕量級工具

如果你表中的數據量不多,可以選用 Azure Data Studio 這款跨平臺工具完成導出操作,用不著裝笨重的、啟動巨慢的SSMS。

在 Azure Data Studio 中執行 SQL 語句后,點擊結果集網格右邊的工具欄中的導出為 CSV 按鈕,即可將結果保存為 含有列名的 CSV 文件。

但是這種方法有缺點。首先是結果網格有數據量限制,不僅限制條數,也限制列里顯的字符數量,遇到企業場景大量數據肯定要爆。于是就有了下面的兩種辦法。

常規數據量,用工具,而不是玩具

經典老牌的 SSMS 提供了專門的數據導出向導,支持 CSV 格式。其中也有兩種導出方式。

從 SQL 語句導出

我們仍就可以利用剛才寫的 SQL 導出數據,但這次不再從結果網格中導出(盡管SSMS支持這么做,但也面臨同樣的數據量限制)。

在數據庫上點右鍵,選擇 Tasks - Export Data

在向導里將數據源選為 SQL Server Native Client,并連接自己的數據庫。

然后把 Destination 選為 Flat File Destination,并指定一個 CSV 路徑作為目標。

然后選擇 Write a query to specify the data to transfer

輸入剛才的 SQL 語句

確定空格編碼符合Windows規則,及分隔符為逗號

Next到底,完成導出

從 View 導出

另一種方法是建一個View,仍然用相同的SQL語句,好處是方便重用。

View 的數據導出方法與剛才幾乎一致,唯一的區別是在 “Specify Table Copy or Query”中選擇"Copy data from one or more tables or views"。

導入數據

啟動 Azure Storage Explorer,打開?Azure Storage 中要導入數據的目標表,在工具欄上點擊 Import

選擇剛才導出的 CSV 文件,核對并更改數據類型。在我的例子里,我僅需要更改 RequestTimeUtc 為 DateTime 類型。

點擊 Insert 后,稍等片刻,數據就被成功導入了!

你也可以回到 Azure Portal 看到這些數據

更多關于 Azure Storage Table,可參考?https://docs.microsoft.com/en-us/azure/storage/tables/table-storage-overview

汪宇杰博客

.NET | Azure |?微軟MVP

長按二維碼獲取我的最新技術分享

喜歡本篇內容請點個在看

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的将数据从 SQL Server 导入 Azure Storage Table的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。