简介:这份文档面向使用 SAP Data Services 进行数据集成的开发与运维人员,聚焦于如何将 MySQL 数据库接入 Data Services 平台,解决异构数据源连接与元数据导入的实际问题。资源包共 1 个 docx 文件,大小约 1.43MB,内容以图文步骤形式组织,便于对照操作。文档围绕创建 data store、配置 MySQL 类型连接、通过 ODBC Admin 建立并测试 ODBC 连接、导入表元数据以及查看表设计与数据等环节展开,同时提醒读者关注 MySQL 服务状态、数据库与表结构准备、Data Services 版本兼容性以及账号密码安全与数据备份恢复等注意事项。目前已有 1621 人学习下载,适合需要快速打通 Data Services 与 MySQL 链路、完成数据抽取转换加载的初中级工程师参考,也可作为日常排错与配置核对的辅助材料。
1. 连接前的环境盘点:为什么你的 Data Services 连不上 MySQL
装 SAP Data Services 的人,十个里有八个最后卡在数据源连接上。软件本身装好了,Job Server 也跑起来了,Designer 能打开,可一到 Data Store 里选 MySQL 就报错——要么 ODBC 驱动列表里压根没有 MySQL 选项,要么 Test Connection 转两圈弹一个“Data source name not found”。这不是 Data Services 的问题,是 Windows 侧的 ODBC 数据源没配对。SAP Data Services 连接 MySQL 走的是 ODBC 通道,不是原生驱动,所以真正要配的是两样东西:一个位数匹配的 MySQL ODBC 驱动,一个在 ODBC 管理器里建好的系统 DSN。这两样缺一个,Data Store 就建不起来。这篇记录适合正在搭数据集成环境、需要把 MySQL 作为源或目标库接进 Data Services 的开发者,尤其是第一次配 ODBC 就翻车的人。下面按我实际装机的顺序,从版本确认到建 Data Store、导元数据、验证数据,一步步走完。
2. 装驱动与建 DSN:MySQL ODBC 的位数匹配和参数填写
2.1 确认 Data Services 的位数,别装错驱动
Data Services 是 32 位还是 64 位,直接决定你该装哪个版本的 MySQL ODBC 驱动。很多人机器上装了 64 位 MySQL Connector/ODBC,结果 Data Services Designer 是 32 位的,ODBC 管理器里死活看不到那个 DSN。判断方法很简单:打开 Designer,看安装目录,或者直接看任务管理器里 Designer 进程有没有带“32 位”标记。我一般会先确认这一点,再决定去下 32 位还是 64 位的驱动。
常见做法是:Data Services 4.x 的 Designer 多数是 32 位应用,所以需要装 32 位的 MySQL ODBC 驱动。如果你装的是 64 位驱动,在 32 位的 ODBC 管理器(C:\Windows\SysWOW64\odbcad32.exe)里是看不到的。反过来,如果 Data Services 是 64 位,就要用C:\Windows\System32\odbcad32.exe打开的管理器。
提示:不要凭感觉猜位数,直接看 Designer 的安装路径或进程信息,确认后再下载对应驱动。
2.2 安装 MySQL ODBC 驱动并创建系统 DSN
驱动下载后直接双击安装,一路 Next 即可。装完后打开对应位数的 ODBC 管理器。这里有个细节:Data Services 连接 MySQL 时,Data Store 里点“ODBC Admin”按钮,弹出的就是系统 ODBC 管理器。所以 DSN 必须建在“系统 DSN”标签页下,不能建在“用户 DSN”里,否则 Job Server 以服务账户运行时读不到。
操作步骤:
- 打开 ODBC 数据源管理器(位数要和 Data Services 一致)。
- 切换到“系统 DSN”标签页,点“添加”。
- 在驱动列表里选 MySQL ODBC 驱动(名称通常是 MySQL ODBC 8.0 Unicode Driver 或 ANSI Driver)。
- 填写连接参数:
# MySQL ODBC 连接参数示例 Data Source Name: DS_MYSQL_TEST # DSN 名称,后面 Data Store 里要对应 TCP/IP Server: 127.0.0.1 # MySQL 服务器地址 Port: 3306 # 默认端口 User: ds_user # 数据库账号 Password: ******** # 密码 Database: test_db # 默认库,可不填,后续在 Data Store 里指定- 点“Test”测试连接。如果弹出“Connection Successful”,说明 DSN 通了。
- 点 OK 保存。
参数说明:Data Source Name 是后续在 Data Services 里要引用的名字,建议用有意义的命名,比如DS_MYSQL_PROD。TCP/IP Server 填 IP 或主机名,如果 MySQL 和 Data Services 不在同一台机器,这里要填实际地址。User 和 Password 是 MySQL 侧提前建好的账号,权限至少要有所需库的 SELECT 权限,如果要做写入还要 INSERT、UPDATE、DELETE。Database 可以不填,Data Store 里可以再指定。
注意:如果 Test 报“Can't connect to MySQL server”,先检查 MySQL 服务是否启动、防火墙是否放行 3306、账号是否允许从 Data Services 所在主机连接。
2.3 在 Data Services 里创建 MySQL Data Store
驱动和 DSN 都就绪后,回到 Data Services Designer。右下角切到 Data Store 标签页,空白处右键新建,或者走菜单。在弹出的 Data Store 定义窗口里,关键参数如下:
- Name:给 Data Store 起个名字,比如
DS_MYSQL_TEST。 - Data store type:选 Database。
- Database type:选 MySQL。
- Database server name:这里填 ODBC 里配好的 DSN 名称,也就是
DS_MYSQL_TEST。 - User name / Password:MySQL 账号密码,可以和 ODBC 里填的一致,也可以不同,但要有权限。
- Database name:指定要连接的库名,比如
test_db。
填完后点“ODBC Admin”按钮,会再次打开 ODBC 管理器,确认 DSN 存在且测试通过。然后回到 Data Store 窗口点 OK。如果一切正常,Data Store 会创建成功,左侧树里能看到这个节点。
常见坑:Database type 如果选错成“ODBC”而不是“MySQL”,后续导入表元数据时可能识别不出 MySQL 的数据类型。所以这里务必选 MySQL。
3. 导入元数据与查看表结构:从 Data Store 到 dimcustomer 表
3.1 导入 MySQL 表元数据
Data Store 建好后,双击它展开,下面会有 Tables 节点。双击 Tables,右侧会列出 MySQL 库中已有的表。如果表很多,可以用筛选。选中需要导入的表,右键选择 Import。Data Services 会读取这些表的元数据(列名、数据类型、长度等),并保存到本地仓库。
导入完成后,在 Data Store 的 Tables 下面就能看到已导入的表。比如示例里的dimcustomer表,双击它,右侧会显示表的设计信息:列名、数据类型、是否可为空、主键等。这些元数据是后续做 ETL 映射的基础。
提示:如果 Tables 下列表为空,先确认 MySQL 账号是否有该库的权限,以及 Data Store 里 Database name 是否填对。
3.2 查看表数据与验证连接
右键点击dimcustomer表,选择 View Data,Data Services 会执行一条SELECT * FROM dimcustomer并把结果展示出来。这一步是验证连接是否真正可用的最直接方式。如果能看到数据,说明 ODBC 通道、Data Store 配置、账号权限都没问题。
我一般会在这时候顺手检查一下字符集。如果 MySQL 是 utf8mb4,而 ODBC 驱动用了 ANSI 版本,中文可能显示乱码。解决办法是换 Unicode 驱动,或者在 DSN 里配置字符集参数。常见做法是在 ODBC 连接的“Connection”标签页里,把 Character Set 设为utf8mb4。
-- 在 MySQL 侧确认字符集 SHOW VARIABLES LIKE 'character_set_database'; SHOW VARIABLES LIKE 'collation_database';如果字符集不是 utf8mb4,而 Data Services 里看到的中文是问号,那就要调整 DSN 的字符集设置,或者改用 Unicode 驱动重新建 DSN。
3.3 元数据导入后的检查清单
导入完成后,建议做几项检查:
- 表数量是否和 MySQL 里一致。
- 关键表的列类型是否映射正确,比如 MySQL 的
datetime对应 Data Services 的datetime,varchar长度是否一致。 - 主键和外键关系是否被识别(Data Services 不会自动导入外键,需要手动定义)。
- 如果有视图,是否也需要导入。
这些检查能避免后续 Job 跑起来才发现类型不匹配或字段缺失。
4. 避坑与排查:ODBC 连接 MySQL 的五个高频翻车点
4.1 现象:ODBC 管理器里看不到 MySQL 驱动
原因:驱动位数和 ODBC 管理器位数不匹配。32 位管理器在SysWOW64下,64 位在System32下。很多人打开的是 64 位管理器,但装的是 32 位驱动,或者反过来。
解决:确认 Data Services 位数,打开对应位数的 ODBC 管理器。如果不确定,两个都打开看看,哪个里面有 MySQL 驱动就用哪个。
4.2 现象:Test Connection 成功,但 Data Store 点 OK 报错
原因:Data Store 里的 Database server name 填的不是 DSN 名称,而是主机名或 IP。Data Services 通过 ODBC 连接时,这里要填 DSN 名。
解决:把 Database server name 改成 ODBC 里建的 DSN 名称,比如DS_MYSQL_TEST。
4.3 现象:导入表元数据时提示“No tables found”
原因:Data Store 里 Database name 没填,或者填的库名不对;或者 MySQL 账号没有该库的权限。
解决:在 Data Store 配置里明确填写 Database name,并确认账号有SELECT权限。可以在 MySQL 里执行SHOW GRANTS FOR 'ds_user'@'%';检查。
4.4 现象:View Data 中文乱码
原因:ODBC 驱动用了 ANSI 版本,或者 DSN 里字符集没设对。
解决:换 Unicode 驱动,或者在 DSN 配置的 Connection 标签页里设置 Character Set 为utf8mb4。如果还是乱码,检查 MySQL 服务端字符集。
4.5 现象:Job Server 执行 Job 时报“Data source not found”
原因:DSN 建在了用户 DSN 下,而 Job Server 以服务账户运行,读不到用户 DSN。
解决:把 DSN 建在系统 DSN 下。如果已经建在用户 DSN,删掉重建到系统 DSN。
5. 装完怎么验证跑通:从 View Data 到一个小 Job
5.1 用 View Data 做第一层验证
建好 Data Store、导入元数据后,右键任意一张表选 View Data,能看到数据就说明连接链路通了。这一步验证的是:ODBC 驱动正常、DSN 正常、Data Store 配置正常、账号权限正常。如果这一步失败,后面的 Job 不用试,先回头查 ODBC。
5.2 用 Query Transform 做第二层验证
新建一个 Data Flow,拖入dimcustomer作为源,加一个 Query Transform,再拖一个 Template Table 作为目标。在 Query 里做一次简单映射,比如只选几列,然后保存并执行。如果 Job 能跑完且目标表有数据,说明 Data Services 不仅能读 MySQL,还能写。这一步验证的是 Job Server 的执行链路。
-- 在 MySQL 侧确认目标表数据 SELECT COUNT(*) FROM target_table;5.3 验证清单与常见收尾检查
| 检查项 | 验证方法 | 通过标准 |
|---|---|---|
| ODBC 连接 | ODBC 管理器 Test | Connection Successful |
| Data Store | Designer 里点 OK | 无报错,节点出现 |
| 元数据导入 | Tables 下列表 | 表数量和 MySQL 一致 |
| 数据读取 | View Data | 能看到数据,无乱码 |
| 数据写入 | 跑一个简单 Job | Job 成功,目标表有数据 |
| 字符集 | 检查中文 | 无乱码 |
我一般会在第一次配好后,把整个流程走一遍,然后记下 DSN 名称、驱动版本、Data Store 配置,下次换环境直接照抄。从那以后,每次新装 Data Services 连 MySQL,我都强制先确认位数、再建系统 DSN、最后才开 Designer,这三步顺序不乱,基本不会翻车。希望帮到你。
本文还有配套的精品资源,点击获取