我有一个excel列作为复制活动中的源。我需要将列从源映射到接收器(MSSQLServer(。
我有一个限制,每当excel源中有一行空白时,我都应该停止复制活动。
我想复制空白行之前的所有列数据,忽略空白行之后的数据。
例如,如果我有这个数据集:
A | B |
---|---|
ABC | DEF |
HIJ | 荷航 |
NOP | QRS |
在ADF管道中,处理数据集内容的选项有限(可以添加列、删除列等(,但修改行本身很困难。您可以使用数据流来完成此操作,但由于接收器是mssqlserver,因此您可以使用row_number((查找任何空行,并将这些行保持为空行。
过程是:
- 创建一个与目标表相同但包含定义为
row INT IDENTITY(1,1) NOT NULL
的行列的暂存表 - 截断暂存表
- 将数据写入临时表
- 使用插入查询从暂存表写入主表:
SELECT * FROM staging_table
WHERE rowid <
(SELECT
COALESCE(MIN(rowid), (SELECT MAX(rowid)+1 FROM staging_table)) FROM staging_table WHERE a IS NULL)