点击上方蓝字关注“汪宇杰博客”

导语

最近有个需求要将数据存储从 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相关推荐

  1. 使用T-SQL导入多个文件数据到SQL Server中一文的疑惑

    - 今天,由于毕业论文需要,我想弄数据转换,所以看了一看T-SQL,oracle实在没时间去学,好在SQL我还是很熟悉,所以打算看一看,写一些存储过程来完成任务. 我无意中在csdn上找到这样一篇文章 ...

  2. sql server 导入excel数据表

    sql server 导入excel数据表 之前谈到过在sql server中对用户的购买记录做过关联分析,数据来源是来自sql server数据库,但有的时候,数据源来自于其他文件,比如excel文 ...

  3. 服务器腾讯通文件数据源导入,连接到 Excel 数据源(SQL Server 导入和导出向导)...

    连接到 Excel 数据源(SQL Server 导入和导出向导) 04/02/2018 本文内容 适用于: SQL Server(所有支持的版本) Azure 数据工厂中的 SSIS Integra ...

  4. access文件链接mysql,连接到 Access 数据源(SQL Server 导入和导出向导)

    2017/06/20 适用对象: SQL Server,包含 Linux 版 Azure SQL 数据库 Azure Synapse Analytics (SQL DW) 并行数据仓库 本主题介绍如何 ...

  5. SQL索引管理器——用于SQL Server和Azure上的索引维护的免费G​​UI工具

    目录 介绍 主意 实现 结果和计划 下载源 - 16.3 MB 下载 SQL 索引管理器 v1.0.0.68.zip - 16.2 MB 下载 SQL 索引管理器 v1.0.0.67.zip - 16 ...

  6. SQL索引管理器——用于SQL Server和Azure上的索引维护的免费GUI工具

    目录 介绍 理念 实现 结果和计划 介绍 我作为SQL Server DBA工作了8年多,管理和优化服务器的性能.在我的空闲时间,我想为世界和我的同事做一些有用的事情.这就是我们最终为SQL Serv ...

  7. azure机器学习_如何集成SQL Server和Azure机器学习

    azure机器学习 Good, clean and reliable data is important for every company, because well-analyzed data w ...

  8. sql azure 语法_使用Azure门户监视安装了SQL Server的Azure计算机

    sql azure 语法 介绍 (Introduction) In this new chapter, we will show how to use the Microsoft Portal to ...

  9. SQL server 导入excel表格

    导入教程: 打开SQL Server Management Studio,按图中的路径进入导入数据界面. 导入的时候需要将EXCEL的文件准备好,不能打开.点击下一步. 数据源:选择"Mic ...

最新文章

  1. 创建磁盘陈列(RAID5)使用经验与原则
  2. WebRTC 系列之音频会话管理
  3. 解决Sqlite中的中文路径问题
  4. matlab读取fortran文件夹,怎样用fortran获取一个文件夹里的全部文件名?
  5. 如何运用领域驱动设计 - 存储库
  6. SpringMVC+uploadify文件上传
  7. 《零基础》MySQL删除数据表(十)
  8. 算法学习(四)冒泡排序
  9. DJANGO中操作数据库
  10. log4j 和slf4j的比较
  11. 【面向对象设计基础】抽象类
  12. vscode ubuntu18.04安装失败
  13. NOIP 模拟题 小G的城堡
  14. 【损失函数】生成任务感知损失小结
  15. enfuzion与lsf构建渲染集群_集群渲染系统构建及优化
  16. 2022考公务员难还是考研难?
  17. KendoUI系列:switch 开关
  18. 为什么80%的企业会选择云产品?
  19. JavaEE——SSM框架整合实现学生信息注册案例
  20. nodejs插件knex 日志打印

热门文章

  1. WindowsPhone8可缩放图片控件的实现
  2. RFileWriteStream 写入汉字
  3. What's blocking my lock? 转载
  4. 世界杯,世界共同的游戏!
  5. 如何将Rant变成生产力电动工具
  6. uac2.0驱动_关闭Vista中令人讨厌的HP驱动程序UAC弹出更新检查
  7. ThoughtWorks技术雷达专区
  8. 用C语言实现解析简单配置文件的小工具
  9. 飘逸的python - hack输出流便于调试
  10. MySQL IFNull 详解