在重定向坏行时问题 - SSIS

时间:2017-12-05 15:55:25

标签: sql-server ssis etl

我将数据从平面文件源(以逗号分隔的文本)导入到表中,但数据在某些字段中包含逗号,导致程序包失败。我已经添加了一个文件目标来记录坏行以便稍后重新访问,但是坏行不会被记录,并且数据的唯一部分会被加载到表中。我附在包裹的图像和不完整的执行屏幕下方。这看起来很简单,但我无法弄清楚导致问题的原因。有人可以帮忙吗?

由于

enter image description here

enter image description here

更新

实际上没有正在进行中的错误消息。它看起来像一个成功的运行日志。但事实并非如此。负载不完整。

enter image description here

2 个答案:

答案 0 :(得分:0)

首先,删除Flat File Destination。将新的“平面文件目标”任务拖到“数据流”字段中,但尚未对其进行配置。右键单击您的平面文件源,然后转到"显示高级编辑器"。关于"输入和输出属性"选项卡,确保在"平面文件源错误输出"下配置输出。它们可能是由BIDS / VS自动创建的。输入错误列后,单击"确定"关上窗户。 接下来,将红色错误输出箭头从源拖动到目标。这应该会出现"配置错误输出"窗口。确保"错误"下的所有行和"截断"设置为" Redirect Row"然后单击"确定" 最后,打开Flat File Destination,并创建一个新的连接管理器。将连接管理器指向错误输出文件,然后设置列和行分隔符。您可能还想设置文本分隔符。 获得所有这些部分后,应将错误行重定向到错误输出文件。如果没有,请回复您的错误消息和样本数据。

答案 1 :(得分:-1)

在平面文件连接管理器的第一页上,您可以选择文本限定符,通常是双引号。大多数读取CSV文件的程序都知道如何解释用双引号括起来的字符串。

现在单个列值为

14261336    5   Test1.xml
16767594    8   Test2.xml
13601470    7   Test3.xml
12963658    5   Test4.xml
17771952    6   Test5.xml

成为:

headerNames <- c('Id','Type','Filename')
GetNames <- read.csv(file= 'c:/temp/XML/myXMLFiles.csv', header = FALSE, col.names = headerNames) #

list(c(GetNames[3])) %>%
  map(read_xml)

CSV文件非常标准的内容