我在DataFactory中使用参数驱动方法和复制数据任务。
使用来自Azure SQL数据库的列表,其中包含来自不同来源的近100个表,我循环遍历此列表并调用复制数据任务,该任务将数据从源复制到目标。源是Azure和OnPrem SQL Server数据库的集合,目标是Azure存储帐户Blob存储(数据存储为CSV文件)。
这样做的原因是,我不必构建100多个不同的管道来将数据摄取到blob存储中。
现在我有一个场景,这是创造一些浩劫。
一些表的字段中包含的数据中有换行符(多行数据),在Blob存储上创建的CSV文件中现在也有这些换行符。当我从BlobStorage读取数据时,这些换行符在实际上不应该的时候证明了一个新行。
的数据
考虑到我使用参数驱动复制数据任务摄取数据的动态方法,是否有方法可以防止这种情况?
可能还需要注意的是,我使用Query(由动态列表构建)而不是Table来获取源数据。也许我可以在SELECT查询中格式化数据。
的
1条答案
按热度按时间ruoxqz4g1#
为了动态地进行这些更改,您可以使用数据流活动而不是复制活动。
+Add
,然后单击+Add column pattern
。CRLF
的每一列,您可以给予如下图所示的表达式。derive(each(match(true()), $$ = replace($$, char(13) + char(10),''))) ~> derivedColumn1
个的数据
如果列有多行数据,则将其替换为单行。
我使用Query(由我的动态列表构建)而不是Table来获取源数据。也许我可以在SELECT查询中格式化数据。
由于您使用的是动态列表中的query,因此可以使用SQL本身来格式化。SQL中替换
CRLF
的语法与数据流中的语法相同。语法:
字符串