当前位置: 首页 > news >正文

JDBC SQL Server Source Connector: 一览与实践

file

在快速发展的数据驱动业务环境中,确保数据在各个系统间高效、准确地同步至关重要。为了进一步的数据处理和分析,经常需要将这些数据同步到其他数据处理系统。Apache SeaTunnel 提供了一个强大而灵活的数据集成框架,使得从 SQL Server 到其他系统的数据同步变得简单且高效。

本文档将指导您如何配置 Apache SeaTunnel,使用 JDBC SQL Server Source Connector 来实现数据的有效同步。

JDBC SQL Server Source Connector

支持 SQL Server 版本

  • 服务器:2008(或更高版本,仅供信息参考)

支持以下引擎

Spark
Flink
Seatunnel Zeta

主要特点

  • [x] 批处理
  • [ ] 流处理
  • [x] 精准一次性
  • [x] 列投影
  • [x] 并行处理
  • [x] 支持用户定义拆分

支持查询 SQL 并能够实现投影效果。

描述

通过 JDBC 读取外部数据源数据。

支持的数据源信息

数据源支持的版本驱动URLMaven
SQL Server支持版本 >= 2008com.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:sqlserver://localhost:1433下载

数据库依赖

请下载与 'Maven' 对应的支持列表,并将其复制到 'SEATNUNNEL_HOME/plugins/jdbc/lib/' 工作目录<p>例如 SQL Server 数据源:cp mssql-jdbc-xxx.jar " style="display: block; margin: 0 auto; max-width: 100%;"></span>SEATNUNNEL_HOME/plugins/jdbc/lib/</p></p>
</blockquote>
<h3 data-tool=数据类型映射

SQL Server 数据类型Seatunnel 数据类型
BITBOOLEAN
TINYINT
SMALLINT
SHORT
INTEGERINT
BIGINTLONG
DECIMAL
NUMERIC
MONEY
SMALLMONEY
DECIMAL((指定列的指定列大小)+1,
(获取指定列的小数点右边的数字的数量。)))
REALFLOAT
FLOATDOUBLE
CHAR
NCHAR
VARCHAR
NTEXT
NVARCHAR
TEXT
STRING
DATELOCAL_DATE
TIMELOCAL_TIME
DATETIME
DATETIME2
SMALLDATETIME
DATETIMEOFFSET
LOCAL_DATE_TIME
TIMESTAMP
BINARY
VARBINARY
IMAGE
UNKNOWN
尚不支持

源选项

名称类型必需默认值描述
url字符串-JDBC 连接的 URL。例如:jdbc:sqlserver://127.0.0.1:1434;database=TestDB
driver字符串-用于连接到远程数据源的 JDBC 类名,如果使用 SQL Server,则值为 com.microsoft.sqlserver.jdbc.SQLServerDriver
user字符串-连接实例的用户名
password字符串-连接实例的密码
query字符串-查询语句
connection_check_timeout_sec整数30等待用于验证连接的数据库操作完成的秒数
partition_column字符串-并行处理的分区列,仅支持数值类型。
partition_lower_bound长整数-用于扫描的 partition_column 最小值,如果未设置,SeaTunnel 将查询数据库获取最小值。
partition_upper_bound长整数-用于扫描的 partition_column 最大值,如果未设置,SeaTunnel 将查询数据库获取最大值。
partition_num整数作业并行度分区计数的数量,仅支持正整数。默认值为作业并行度。
fetch_size整数0对返回大量对象的查询,您可以配置查询中使用的行抓取大小,以减少满足选择条件所需的数据库命中次数,从而提高性能。
零表示使用 JDBC 默认值。
common-options-源插件的常见参数,请参阅 源常用选项 以获取详细信息。

提示

如果未设置 partition_column,则将以单一并发运行;如果设置了 partition_column,则将根据任务的并发度进行并行执行。

任务示例

简单:

简单的单一任务以读取数据表

# 定义运行时环境
env {
  # 您可以在此处设置 Flink 配置
  execution.parallelism = 1
  job.mode = "BATCH"
}
source{
    Jdbc {
        driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
        url = "jdbc:sqlserver://localhost:1433;databaseName=column_type_test"
        user = SA
        password = "Y.sa123456"
        query = "select * from full_types_jdbc"
    }
}

transform {
    # 如果您想要获取有关如何配置 seatunnel 和查看变换插件的完整列表的更多信息,
    # 请转到 [seatunnel.apache.org/docs/transform-v2/sql](https://seatunnel.apache.org/docs/transform-v2/sql)
}

sink {
    Console {}
}

并行:

使用您配置的分片字段和分片数据并行读取您的查询表,如果您希望读取整个表,可以这样做:

env {
  # 您可以在此处设置 Flink 配置
  execution.parallelism = 10
  job.mode = "BATCH"
}

source {
    Jdbc {
        driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
        url = "jdbc:sqlserver://localhost:1433;databaseName=column_type_test"
        user = SA
        password = "Y.sa123456"
        # 根据需要定义查询逻辑
        query = "select * from full_types_jdbc"
        # 并行分片读取字段
        partition_column = "id"
        # 片段数量
        partition_num = 10
    }
}

transform {
    # 如果您想要获取有关如何配置 Seatunnel 和查看转换插件的完整列表的更多信息,
    # 请转到 https://seatunnel.apache.org/docs/transform-v2/sql
}

sink {
    Console {}
}

并行:

使用您配置的分片字段和分片数据并行读取您的查询表,如果您希望读取整个表,可以这样做:

env {
  # 您可以在此处设置 Flink 配置
  execution.parallelism = 10
  job.mode = "BATCH"
}

source {
    Jdbc {
        driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
        url = "jdbc:sqlserver://localhost:1433;databaseName=column_type_test"
        user = SA
        password = "Y.sa123456"
        # 根据需要定义查询逻辑
        query = "select * from full_types_jdbc"
        # 并行分片读取字段
        partition_column = "id"
        # 片段数量
        partition_num = 10
    }
}

transform {
    # 如果您想要获取有关如何配置 Seatunnel 和查看转换插件的完整列表的更多信息,
    # 请转到 https://seatunnel.apache.org/docs/transform-v2/sql
}

sink {
    Console {}
}

并行:

使用您配置的分片字段和分片数据并行读取您的查询表,如果您希望读取整个表,可以这样做:

env {
  # 您可以在此处设置 Flink 配置
  execution.parallelism = 10
  job.mode = "BATCH"
}

source {
    Jdbc {
        driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
        url = "jdbc:sqlserver://localhost:1433;databaseName=column_type_test"
        user = SA
        password = "Y.sa123456"
        # 根据需要定义查询逻辑
        query = "select * from full_types_jdbc"
        # 并行分片读取字段
        partition_column = "id"
        # 片段数量
        partition_num = 10
    }
}

transform {
    # 如果您想要获取有关如何配置 Seatunnel 和查看转换插件的完整列表的更多信息,
    # 请转到 https://seatunnel.apache.org/docs/transform-v2/sql
}

sink {
    Console {}
}

并行:

使用您配置的分片字段和分片数据并行读取您的查询表,如果您希望读取整个表,可以这样做:

env {
  # 您可以在此处设置 Flink 配置
  execution.parallelism = 10
  job.mode = "BATCH"
}

source {
    Jdbc {
        driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
        url = "jdbc:sqlserver://localhost:1433;databaseName=column_type_test"
        user = SA
        password = "Y.sa123456"
        # 根据需要定义查询逻辑
        query = "select * from full_types_jdbc"
        # 并行分片读取字段
        partition_column = "id"
        # 片段数量
        partition_num = 10
    }
}

transform {
    # 如果您想要获取有关如何配置 Seatunnel 和查看转换插件的完整列表的更多信息,
    # 请转到 https://seatunnel.apache.org/docs/transform-v2/sql
}

sink {
    Console {}
}

分段并行读取示例:

这是一个快速并行读取数据的分片示例

env {
  # 您可以在此处设置引擎配置
  execution.parallelism = 10
}

source {
  # 这是一个示例源插件,仅用于测试和展示源插件的功能
  Jdbc {
    driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
    url = "jdbc:sqlserver://localhost:1433;databaseName=column_type_test"
    user = SA
    password = "Y.sa123456"
    query = "select * from column_type_test.dbo.full_types_jdbc"
    # 并行分片读取字段
    partition_column = "id"
    # 片段数量
    partition_num = 10
  }
  # 如果您想要获取有关如何配置 Seatunnel 和查看源插件的完整列表的更多信息,
  # 请转到 https://seatunnel.apache.org/docs/connector-v2/source/Jdbc
}

transform {
  # 如果您想要获取有关如何配置 Seatunnel 和查看转换插件的完整列表的更多信息,
  # 请转到 https://seatunnel.apache.org/docs/transform-v2/sql
}

sink {
  Console {}
  # 如果您想要获取有关如何配置 Seatunnel 和查看接收插件的完整列表的更多信息,
  # 请转到 https://seatunnel.apache.org/docs/connector-v2/sink/Jdbc
}
> 本文由 [白鲸开源科技](http://www.whaleops.com) 提供发布支持!

相关文章:

JDBC SQL Server Source Connector: 一览与实践

在快速发展的数据驱动业务环境中&#xff0c;确保数据在各个系统间高效、准确地同步至关重要。为了进一步的数据处理和分析&#xff0c;经常需要将这些数据同步到其他数据处理系统。Apache SeaTunnel 提供了一个强大而灵活的数据集成框架&#xff0c;使得从 SQL Server 到其他系…...

WebDAV之π-Disk派盘 + Keepass2Android

推荐一款密码管理器,允许人们使用复杂的组合进行登录,而不必记住所有的组合。 Keepass2Android可以支持大多数安卓互联网浏览器, Android设备上同步软件,还支持通过WebDAV添加葫芦儿派盘。 Keepass2Android 目前安全方面最大的问题之一是大多数人几乎在任何地方都使用通用…...

AspectJX - Android开发平台的AOP框架

官网 GitHub - HujiangTechnology/gradle_plugin_android_aspectjx: A Android gradle plugin that effects AspectJ on Android project and can hook methods in Kotlin, aar and jar file. 项目简介 一个基于AspectJ并在此基础上扩展出来可应用于Android开发平台的AOP框架…...

【TDK 电容 】介电质 代码 对应温度及变化率

JB 电解质是什么&#xff1f;没找到&#xff0c;只有TDK有&#xff0c;也只有这个温度的区别&#xff0c;并且已经停产在售。 对比发现是mouser网站关于电容的描述错误。下图显示正确的&#xff0c;再然后是错误的。 在TDK官网&#xff0c;这样的描述 温度特性 分类标准代码温…...

随笔--解决ubuntu虚拟环境的依赖问题

文章目录 问题一&#xff1a;在conda虚拟环境中报错ImportError: libcupti.so.11.7:cannot open shared object file: No such file or directory解决步骤问题二&#xff1a; RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling cublasSgemmStridedBatched( …...

Gin学习笔记

Gin学习笔记 Gin文档&#xff1a;https://pkg.go.dev/github.com/gin-gonic/gin 1、快速入门 1.1、安装Gin go get -u github.com/gin-gonic/gin1.2、main.go package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {// 创建路由引…...

使用 OpenTracing 和 LightStep 监控无服务器功能

无服务器功能的采用在企业组织内达到了创纪录的水平。有趣的是&#xff0c;鉴于越来越多的采用和兴趣&#xff0c;许多监控解决方案孤立了在这些环境中执行的代码的性能&#xff0c;或者仅提供有关执行的基本指标。为了了解应用程序的性能&#xff0c;我想知道存在哪些瓶颈、时…...

Sleep(0)、Sleep(1)、SwitchToThread()

当 timeout 参数为 0 时&#xff08;如 Sleep(0)&#xff09;&#xff0c;操作系统会检查可运行队列中是否有高于或等于当前线程优先级的其他就绪线程。如果有&#xff0c;当前线程将被移除并放弃处理器时间&#xff0c;让其他线程执行。如果没有高优先级的线程&#xff0c;当前…...

前端食堂技术周刊第 103 期:10 月登陆 Web 平台的新功能、TS 5.3 RC、React 2023 状态、高并发的哲学原理、Web 资源加载优先级

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;夏梦玫珑 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童欧巴。欢迎来到前端食堂技术周刊&#xff0c;我们先来看下…...

Python(三)数据类型转换

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …...

linq to sql性能优化技巧

linq to sql 是一个代码生成器和ORM工具,他自动为我们做了很多事情,这很容易让我们对他的性能产生怀疑 linq to sql 是一个代码生成器和ORM工具,他自动为我们做了很多事情,这很容易让我们对他的性能产生怀疑。但是也有几个测试证明显示在做好优化的情况下,linq to sql的…...

ubuntu20.04 安装cudnn

中文地址是.cn&#xff1a;cuDNN 历史版本 | NVIDIA 开发者 英文地址是.com&#xff1a;cuDNN 历史版本 | NVIDIA 开发者 1、下载cudnn&#xff1a;cudnn-local-repo-ubuntu2004-8.8.1.3_1.0-1_amd64.deb 解压并安装&#xff1a;sudo dpkg -i cudnn-local-repo-ubuntu2004-8.8…...

手机转接器实现原理,低成本方案讲解

USB-C PD协议里&#xff0c;SRC和SNK双方之间通过CC通信来协商请求确定充电功率及数据传输速率。当个设备需要充电时&#xff0c;它会发送消息去给适配器请求充电&#xff0c;此时充电器会回应设备的请求&#xff0c;并告知其可提供的档位功率&#xff0c;设备端会根据适配器端…...

RDS for MySQL 是什么

RDS for MySQL 是一种托管型数据库服务&#xff0c;RDS代表“关系数据库服务”(Relational Database Service)。这是云服务提供商提供的一种服务&#xff0c;用于简化关系数据库的设置、操作和扩展。对于MySQL版本的RDS&#xff0c;意味着它是专门为运行MySQL数据库管理系统的实…...

Java开发注意事项和细节说明

&#x1f468;‍&#x1f393;&#x1f468;‍&#x1f393;博主&#xff1a;发量不足 个人简介&#xff1a;耐心&#xff0c;自信来源于你强大的思想和知识基础&#xff01;&#xff01; &#x1f4d1;&#x1f4d1;本期更新内容&#xff1a;Java开发注意事项和细节说明&…...

springboot中使用Java代码进行MongoDB集合数据备份

有时候mongo的集合中数据量太大&#xff0c;查询或翻页时可能会超过最大数量报错&#xff0c;可以给mongo的集合进行备份并保留最近一段时间的数据即可 下面是通过Java代码进行mongo的集合备份单元测试 import cn.hutool.core.date.DateUtil; import com.nuoyi.study.dao.mongo…...

JavaEE的渊源

JavaEE的渊源 1. JavaEE的起源2. JavaEE与Spring的诞生3. JavaEE发展历程&#xff08;2003-2007&#xff09;4. JavaEE发展历程&#xff08;2009-至今&#xff09;5. Java的Spec数目与网络结构 1. JavaEE的起源 我们首先来讲一下JavaEE的起源 ,为什么要来讲起源 &#xff1f; …...

html中使用JQ自定义锚点偏移量

问题&#xff1a;一般情况下使用href跳转达到效果。如果页面中头部固定住了&#xff0c;点击瞄点的时候自动是最上面&#xff0c;头部会给它覆盖掉一部分&#xff0c;所以要在点击之后额外再加头部高度 <a href"#aa">Technical Documents</a><div id&…...

032、数据增广*

之——泛化性提升 杂谈 深度学习的数据增强&#xff08;Data Augmentation&#xff09;是一种技术&#xff0c;用于通过对原始数据进行多样性的变换和扩充&#xff0c;以增加训练数据的多样性&#xff0c;提高模型的泛化能力。这有助于减轻过拟合问题&#xff0c;提高深度学习模…...

力扣最热一百题——盛水最多的容器

终于又来了。我的算法记录的文章已经很久没有更新了。为什么呢&#xff1f; 这段时间都在更新有关python的文章&#xff0c;有对python感兴趣的朋友可以在主页找到。 但是这也并不是主要的原因 在10月5号我发布了我的第一篇博客&#xff0c;大家也可以看见我的每一篇算法博客…...

英飞凌AURIX TC3XX GPIO驱动配置与LED呼吸灯实现

1. 认识AURIX TC3XX的GPIO模块 第一次接触英飞凌AURIX TC3XX系列MCU时&#xff0c;我被它强大的GPIO功能惊艳到了。这不仅仅是一个简单的数字输入输出接口&#xff0c;而是集成了多种高级特性的硬件模块。在实际汽车电子项目中&#xff0c;比如氛围灯控制、状态指示灯等场景&a…...

智能变电站实战:如何用SCL配置文件搞定IED设备联调(附避坑案例)

智能变电站实战&#xff1a;SCL配置文件在IED设备联调中的关键作用与避坑指南 在智能变电站的工程实施中&#xff0c;设备联调环节往往成为项目进度的"拦路虎"。据统计&#xff0c;超过60%的现场调试时间消耗在IED设备间的通信配置问题上。SCL&#xff08;Substation…...

PyTorch实战(38)——深度学习模型可解释性

PyTorch实战&#xff08;38&#xff09;——深度学习模型可解释性0. 前言1. PyTorch 模型可解释性2. 训练手写数字分类器3. 可视化模型卷积核4. 可视化特征图小结系列链接0. 前言 在本专栏中&#xff0c;我们已经构建了多种深度学习模型来完成不同任务&#xff0c;包括手写数字…...

AI持续爆火,相关岗位薪资到底达到了多少,AI大模型岗位薪资真相:多少年包能拿到?普通人如何破局?

“AI相关岗位薪资” 随着AI持续火爆&#xff0c;各大厂也都在招聘相关人才&#xff0c;近日OfferShow专门对AI相关岗位的工资情况进行了一期专题汇总&#xff0c;都是校招岗位年包90W左右年包100W年包80w70W50W左右40W左右54W左右34W左右。 看大家投票可信度还是挺高的&#xf…...

华为MatePad 11鸿蒙2.0平板变身编程本:保姆级AidLux+VSCode配置避坑指南

华为MatePad 11鸿蒙平板编程环境搭建实战&#xff1a;AidLux与VSCode高效配置指南 在移动办公与碎片化学习成为主流的今天&#xff0c;将华为MatePad 11这样的高性能平板转变为便携式编程工作站&#xff0c;正成为越来越多开发者的现实需求。鸿蒙系统2.0的分布式能力与AidLux的…...

从零开始:如何为你的深度学习项目选择最合适的开源数据集

从零开始&#xff1a;如何为你的深度学习项目选择最合适的开源数据集 当你站在深度学习项目的起点&#xff0c;面对琳琅满目的开源数据集时&#xff0c;如何做出明智的选择往往决定了项目的成败。数据集不仅是模型训练的"原材料"&#xff0c;更是影响最终性能的关键变…...

OpenClaw多用户方案:QwQ-32B共享环境下的权限隔离

OpenClaw多用户方案&#xff1a;QwQ-32B共享环境下的权限隔离 1. 为什么需要多用户方案&#xff1f; 去年我在家里搭建了一个OpenClaw自动化环境&#xff0c;原本只是个人使用。直到某天家人看到我用语音指令让AI自动整理照片、生成周报后&#xff0c;纷纷要求"共享&quo…...

临近起飞,在哪个平台更容易捡漏特价机票?2026年实测指南

“机票越临近起飞越便宜”——这个说法你一定听过。每逢假期临近&#xff0c;总有人在社交媒体上分享自己“起飞前两小时抢到白菜价机票”的神奇经历。但当你真的想在清明、五一出行前“赌一把”时&#xff0c;往往发现价格不仅没降&#xff0c;反而翻倍了。那么问题来了&#…...

同架构大数据量HGDB到HGDB数据迁移

文章目录环境文档用途详细信息环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7,银河麒麟 &#xff08;X86_64&#xff09; 版本&#xff1a;4.5.8 文档用途 本文介绍同架构大数据量情况下&#xff0c;为了减少停机时间&#xff0c;先搭建流复制同步数据&…...

K230目标检测实战:手把手教你用Labelme标注数据并一键转成VOC格式(附避坑指南)

K230目标检测实战&#xff1a;高效数据标注与VOC格式转换全攻略 当你第一次接触K230开发板进行目标检测项目时&#xff0c;数据准备往往是最大的拦路虎。特别是从原始图片到符合AI_Cube要求的VOC格式数据集&#xff0c;这个过程充满了各种"坑"。本文将分享一套经过实…...