You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用Azure Data Factory将Azure表存储数据导入Azure Data Explorer

Azure表存储到Azure Data Explorer的数据迁移方案(无需ADF + .NET实现)

无需Azure Data Factory的迁移方法

1. 利用ADX门户内置导入工具

这是最直观的快速迁移方式,适合一次性导入或验证场景:

  • 登录Azure门户,进入目标ADX集群与数据库
  • 左侧菜单选「数据」→「导入数据」
  • 数据源类型选「Azure表存储」,填写存储账户名、表名,配置访问凭证(SAS令牌或托管身份均可)
  • 目标表配置:可自动创建新表(ADX会自动推断表存储的Schema),或映射到已有表
  • 预览数据后启动导入,还能设置定时刷新规则实现增量同步

2. 使用KQL .ingest命令脚本化导入

适合自动化或批量执行场景,直接通过Kusto查询触发导入:

.ingest into table TargetADXTable (
    h@'https://your-storage-account.table.core.windows.net/your-table-name?sv=2023-11-03&ss=t&srt=sco&sp=rl&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=your-sas-token'
) with (format = "azuretable", ignoreFirstRecord = false)
  • 生成SAS令牌时需确保包含读取(rl)权限,有效期按需设置
  • 可通过ADX查询编辑器或Kusto CLI执行该命令

.NET编程实现迁移

完全可以用.NET实现端到端的迁移流程,核心依赖两个Azure SDK,具体方案如下:

所需NuGet包

Install-Package Azure.Data.Tables
Install-Package Azure.Kusto.Data

核心流程示例代码

using Azure.Data.Tables;
using Azure.Kusto.Data;
using Azure.Kusto.Data.Common;
using System.Text.Json;

// 1. 分页读取Azure表存储数据(避免内存过载)
var storageConnString = "your-storage-connection-string";
var tableClient = new TableServiceClient(storageConnString).GetTableClient("your-table-name");

var entities = new List<YourCustomTableEntity>();
await foreach (var entity in tableClient.QueryAsync<YourCustomTableEntity>())
{
    entities.Add(entity);
}

// 2. 转换为ADX兼容的JSON格式
var jsonPayload = JsonSerializer.Serialize(entities);

// 3. 连接ADX并写入数据
var adxClusterUri = "https://your-adx-cluster.kusto.windows.net";
var databaseName = "your-target-database";

// 根据场景选择认证方式:服务主体/用户密码/托管身份等
var kustoConnBuilder = new KustoConnectionStringBuilder(adxClusterUri, databaseName)
    .WithAadDefaultAuthentication();

using var kustoClient = KustoClientFactory.CreateCslAdminProvider(kustoConnBuilder);

// 小批量数据用inline导入
var ingestCommand = CslCommandGenerator.GenerateIngestInlineCommand(
    "TargetADXTable", 
    jsonPayload, 
    DataSourceFormat.Json
);

await kustoClient.ExecuteControlCommandAsync(ingestCommand);

大数据量优化建议

  • 避免直接inline导入:数据量较大时,先将数据写入Azure Blob存储,再用KQL的.ingest命令从Blob导入,性能更稳定
  • 增量同步:利用表存储的Timestamp字段,每次仅查询上次同步时间之后的实体,减少数据传输量
  • 并行处理:将表存储数据分片读取,并行写入ADX提升迁移效率

关键注意事项

  • 权限配置:优先用托管身份给ADX集群分配表存储的读取权限,比SAS令牌更安全
  • Schema映射:ADX表的字段类型需与表存储实体匹配,导入时可通过with (mapping = "your-mapping-name")自定义字段映射规则
  • 状态监控:通过ADX的「数据导入」面板查看导入进度,或用KQL查询.show operations跟踪任务状态

内容的提问来源于stack exchange,提问作者cgsabari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:15:48