Dataphin管道任务从SqlServer抽取数据时,空字符串的转化处理方法

产品名称

Dataphin

产品模块

管道任务

概述

本文描述了当使用管道从SqlServer抽取数据时,SqlServer中存在空字符串的处理方法。

问题描述

当您使用管道从SqlServer抽取数据时,有个字段数据存在有空字符串,想用字段计算给它换掉,希望将空串替换为0。

问题原因

因为管道任务不支持该操作,需要在SqlServer源端进行处理。

解决方案

在SqlServer参考处理方法如下:

采用case when的写法,将空串处理为0。

select case when 字段名='' then '0' else 字段名 end from 表名

将字段名为空的替换成实际字段名,表名替换为实际的表名。

示例:

假如管道任务希望读取SqlServer中的表luyao.tbl_dept的数据,同步到目标端。字段dept_name的数据存在空字符串,需要将空串替换为0

create table luyao.tbl_dept
(
    dept_id int primary key,
    dept_name nvarchar(100) not null,
    dept_address nvarchar(100)
)
 
insert into luyao.tbl_dept(dept_id,dept_name,dept_address) values (1,'','火星');
insert into luyao.tbl_dept(dept_id,dept_name,dept_address) values (2,'制造部','地球');
insert into luyao.tbl_dept(dept_id,dept_name,dept_address) values (3,'生产部','月球');

 

方法1:创建中间表,使用中间表进行同步。

select * into luyao.tbl_dept1 from tbl_dept where 1=2;

 
insert into luyao.tbl_dept1(dept_id,dept_name,dept_address) select dept_id,case when dept_name='' then '0' else dept_name end,dept_address from luyao.tbl_dept;
 
管道输入配置:
 
方法二、创建视图,使用视图进行同步。
CREATE view luyao.view_tbl_dept
as
select dept_id,case when dept_name='' then '0' else dept_name end as dept_name,dept_address from luyao.tbl_dept;
 
管道输入配置:
 
 

更多信息

NA

相关文档

NA