TDengine 零代码接入 Microsoft SQL Server:通过 taosExplorer 实现历史数据迁移与实时同步

发布时间:2026/9/12 11:18:38
TDengine 零代码接入 Microsoft SQL Server:通过 taosExplorer 实现历史数据迁移与实时同步
TDengine 零代码接入 Microsoft SQL Server通过 taosExplorer 实现历史数据迁移与实时同步【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本文介绍如何在 TDengine 的图形化管理工具 taosExplorer 中通过零代码方式创建从 Microsoft SQL Server 到 TDengine 集群的数据接入任务覆盖连接配置、认证与连接选项、SQL 查询模板、数据映射、高级选项与异常处理等完整配置环节。读完本文你将能够在浏览器中完成 SQL Server2016历史数据迁移与实时数据同步任务的创建、验证与运行监控并理解子表拆分、时间占位符等核心机制背后的设计意图。功能概述Microsoft SQL Server 是最流行的关系型数据库之一大量物联网与工业互联网系统长期使用它存储设备上报的数据。然而随着接入设备量持续增长、用户对数据实时反馈的要求不断提高传统关系型数据库在时序数据场景下的存储与查询能力逐渐成为瓶颈。为此从 TDengine TSDB 企业版 v3.3.2.0 开始TDengine 提供了从 Microsoft SQL Server 高效读取数据并写入 TDengine 的能力用于实现历史数据迁移将存量业务数据按时间范围批量迁入 TDengine实时数据同步持续订阅源库新增数据保持 TDengine 与源系统数据一致。企业版特性本文所述功能仅存在于 TDengine TSDB-Enterprise 中TDengine TSDB-OSS 不包含该功能。零代码接入的整体架构与更多数据源MySQL、Oracle、PostgreSQL、Kafka、MQTT、OPC UA 等说明可参阅 Data Connectors 总览。在 TDengine 侧每个数据接入任务都对应一个运行中的工作负载其运行指标由 taoskeeper 以超级表形式持久化其中 SQL Server 任务对应名为taosx_task_mssql的日志超级表见 vnodeQuery.c 中 taoskeeper 日志超级表清单tkLogStb可用于任务运行状态的监控与排障。前置条件在开始创建任务前需要确认以下前提TDengine TSDB 企业版 v3.3.2.0 及以上并已部署 taosExplorer运行在 TDengine 所在主机或 IP 的6060 端口源端 Microsoft SQL Server 为 2016 及以上版本或支持 TLS1.2源库账号具备对应组织/库的读取权限目标 TDengine 集群中已有用于接收数据的数据库可在配置过程中现场创建。新增数据源在浏览器中打开 taosExplorerhttp://TDengine主机或IP:6060按以下步骤进入任务创建页面在左侧主菜单点击Data In数据写入然后点击Add Task新增任务在Name名称字段输入任务的唯一名称例如test_mssql_01从Type类型下拉框选择Microsoft SQL Server页面字段会随类型变化Agent代理为非必填项如需通过代理执行任务可从下拉框选择已有代理也可点击Create New Agent现场创建从Target DB目标数据库下拉框选择数据落库的目标数据库也可点击Create Database现场创建。完成基本信息后进入源库连接相关配置。配置连接信息在Connection Configuration连接配置区域填写源 Microsoft SQL Server 数据库的连接信息主要包括配置项说明host源 SQL Server 主机地址例如127.0.0.1port源 SQL Server 监听端口默认1433Database源数据库名称例如db1配置认证信息在Authentication认证区域填写源库账号User输入源 Microsoft SQL Server 数据库的用户名该用户必须拥有对应组织的读取权限Password输入上述用户在该源库中的登录密码。配置连接选项Connection Options连接选项区域提供以下可选配置配置项说明Instance NameMicrosoft SQL Server 实例名称在 SQL Browser 中定义的实例名仅 Windows 平台可用。若指定端口将被替换为 SQL Browser 返回的值Application Name应用程序名称用于标识发起连接的应用程序便于源库侧审计与定位Encryption是否使用加密连接默认值为Off可选项Off、On、NotSupported、RequiredTrust Certificate是否信任服务器证书。若开启则不对服务器证书做验证、按原样接受开启后下方Trust Certificate CA字段将被隐藏Trust Certificate CA是否信任服务器证书的 CA。若上传 CA 文件则除系统信任库外还会依据所给 CA 证书对服务器证书进行校验完成上述配置后点击Check Connectivity检查连通性按钮验证所填信息能否正常从源 SQL Server 数据库读取数据。若检查失败请根据页面返回的具体错误信息修正配置。配置 SQL 查询SQL 查询配置是决定迁移范围、切片方式与数据有序性的核心环节。子表字段Subtable FieldSubtable Field用于拆分子表是一条select distinct的 SQL 语句查询指定字段组合的非重复项通常与transform数据映射中的 tag 一一对应。该配置主要为了解决数据迁移乱序问题必须与SQL Template配合使用否则无法达到预期效果。使用示例如下子表字段填写select distinct col_name1, col_name2 from table表示使用源表中的col_name1与col_name2两个字段拆分目标超级表的子表在SQL 模板中添加子表字段占位符例如select * from table where ts ${start} and ts ${end} and ${col_name1} and ${col_name2}运行时${col_name1}、${col_name2}会展开为等值条件如col_name1deviceA、col_name21而非裸列名从而将全表扫描收敛为按设备维度的分片查询在transform中配置col_name1与col_name2到两个 tag 的映射。SQL 模板SQL TemplateSQL Template是查询数据的 SQL 语句模板必须包含时间范围条件且开始时间与结束时间成对出现。模板中的时间范围由源数据库中代表时间的列和下列占位符共同组成占位符格式示例${start}、${end}RFC3339 格式时间戳含时区2024-03-14T08:00:000800${start_no_tz}、${end_no_tz}不带时区的 RFC3339 字符串2024-03-14T08:00:00${start_date}、${end_date}仅日期2024-03-14需要注意源库列类型的限制仅datetime2与datetimeoffset支持使用${start}/${end}查询datetime与smalldatetime只能使用${start_no_tz}/${end_no_tz}查询timestamp不能用作查询条件。此外为彻底解决迁移数据乱序问题建议在查询语句中添加排序条件例如order by ts asc。时间范围与切片Start Time起始时间迁移数据的起始时间必填End Time结束时间迁移数据的结束时间可留空。若设置任务执行到结束时间后自动停止若留空则持续同步实时数据任务不会自动停止Query Interval查询间隔分段查询数据的时间间隔默认 1 天。为避免单次查询数据量过大每个数据同步子任务会按查询间隔将数据切分为多个时间段分别查询Delay Duration延迟时长与查询间隔配合使用。在实时同步场景中为避免延迟写入的数据丢失每次同步任务会在「时间间隔 延迟时长」的时间点触发查询。例如查询间隔 3600 秒、延迟时长 60 秒时查询任务会在 09:01 触发查询源库 08:00–09:00 时间段的数据。配置数据映射在Data Mapping数据映射区域配置字段提取、过滤与目标表映射。点击Retrieve from Server从服务器检索按钮从 Microsoft SQL Server 获取示例数据在Extract or Split from Column从列中提取或拆分中填写需要从源字段提取或拆分的字段。例如将vValue字段拆分为vValue_0与vValue_1两个字段选择 split 提取器separator填写分隔符,number填写 2在Filter过滤中填写过滤条件例如Value 0则只有 Value 大于 0 的数据才会被写入 TDengine过滤表达式结果必须为布尔类型支持比较运算符 !、逻辑运算符 || !以及字符串函数is_empty、contains、starts_with、ends_with、len等在Mapping映射中选择要映射到的 TDengine 超级表以及映射到该超级表的列映射规则支持直接映射mapping、常量value、时间戳生成器generator、字符串拼接join、格式化format、求和sum、表达式计算expr等子表名可通过format表达式动态生成点击Preview预览查看映射结果确认字段对应关系与数据类型无误后再提交。关于解析、提取/拆分、过滤、映射规则的完整说明可参阅 Data Connectors 中的数据提取、过滤与转换章节。配置高级选项Advanced Options高级选项区域默认折叠点击右侧展开Maximum Read Concurrency最大读并发限制数据源连接数或读取线程数默认0表示由连接器自动配置。当源端响应较慢且需要更多并发时可适当调大该参数同时注意调节资源占用Batch Size批量大小单次发送的最大消息或行数SQL Server 数据源默认值为10000。当默认参数不满足需求或需要调整资源占用时修改。配置异常处理策略Exception Handling Strategy异常处理策略区域默认折叠点击展开。通用处理策略包括Archive归档将无效数据写入归档文件默认位于${data_dir}/tasks/id/datetime不写入目标数据库Discard丢弃忽略无效数据Error报错报告错误Cache缓存当目标连接失败或资源不足时将数据写入缓存文件待目标恢复后重新写入。可为以下异常场景分别指定策略不同场景可选项不同异常场景可选策略目标连接超时归档、丢弃、报错、缓存目标数据库不存在归档、丢弃、报错表不存在归档、丢弃、报错、自动建表并重试主时间戳超出范围now - keep1至now 100y归档、丢弃、报错主时间戳为空归档、丢弃、报错、使用当前时间复合主键为空归档、丢弃、报错表名超过 192 字符归档、丢弃、报错、截断、截断并归档表名含非法字符如.归档、丢弃、报错、用配置字符串替换非法字符表名模板变量为空丢弃、变量留空、用配置字符串替换列不存在归档、丢弃、报错、自动补列并重试列名超过 64 字符归档、丢弃、报错列值超过定义长度归档、丢弃、报错、截断、截断并归档也可通过自动扩展列修改表结构后重试其他数据错误归档、丢弃、报错附加设置包括Connection Timeout连接超时目标连接超时时间单位为秒取值范围1–600Temporary Storage Location临时存储位置相对${data_dir}/tasks/id/的路径Archive Retention Days归档保留天数非负整数0表示不限制Archive Available Space归档可用空间取值0–655350表示不限制Archive Location归档位置相对${data_dir}/tasks/id/的路径Archive Write Failure Strategy归档写失败策略删除旧文件、丢弃数据或报错并停止任务。提交任务与运行验证点击Submit提交按钮完成 Microsoft SQL Server 到 TDengine 数据同步任务的创建随后返回Data Source List数据源列表页面即可查看任务执行情况任务提交成功后状态切换为Running若失败可通过任务的活动日志定位错误原因在任务列表页可对任务进行启动、停止、查看、删除、复制等操作并查看各任务写入记录数、流量等运行指标。自 v3.3.5.0 起任务列表还会为每个运行中的任务展示健康状态Ready、Idle、Active、Pending、Busy、Bounce、SourceError、SinkError、Fatal 等并可通过高级选项中的Health Check Duration、Busy State Threshold、Max Write Queue Length、Write Error Threshold等参数调整健康监测口径详细说明见 Data Connectors 任务管理章节。断点续传机制SQL Server 接入任务具备检查点恢复能力任务会持久化最后一次查询的时间戳任务中断或重启后从该时间点继续同步配合延迟时长设置可最大限度保证数据不丢失、不重复。任务进度同样以taosx_task_progress超级表持久化见 vnodeQuery.c便于跨重启场景下的状态核查。小结通过 taosExplorer 的零代码接入能力从 Microsoft SQL Server 到 TDengine 的数据迁移与实时同步不再需要编写任何 ETL 代码你只需完成连接信息、认证与连接选项配置定义好带时间占位符的 SQL 模板与子表拆分字段再通过数据映射将源字段映射到目标超级表即可在数分钟内建立一条可持续运行的数据管道。理解${start}系列占位符与 SQL Server 时间类型的匹配规则、查询间隔与延迟时长的配合方式以及异常处理策略的选择是保证任务稳定、有序、不丢数运行的关键。相关资源文件说明可进一步参考 异常处理策略定义 与 高级选项定义。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考