CSV 文件上的 SSIS Foreach 循环错误
SSIS Foreach loop error on CSV files
是的,所以我有一个 foreach 循环,其中的数据流通过一组格式完全相同的文件。这改变了派生列的一些内容,派生列全部转储到 SQL 服务器数据库中,这将成为我的暂存 table.
问题是有些文件会抛出错误,即使这些文件的格式完全相同,但错误总是在日期附近。它将毫无问题地通过 4 个文件,然后在第 5 个文件上它停止工作。
我想做什么?
- 我想获取大量相同格式的文件,并在更改某些格式的同时将其中的数据放入 SQL 数据库。
我尝试过什么?
- 我试图将日期重新格式化为 dd/mm/yyyy,这是我希望日期采用的格式。
重新格式化有效,但在出现类型转换错误之前,同一文件出现了错误。
这是我得到的错误:
[OLE DB 目标 [59]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。
OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“转换规范的字符值无效”。
[OLE DB 目标 [59]] 错误:OLE DB Destination.Inputs[OLE DB 目标输入].OLE DB [=61= 上的列[数量] 出错][OLE DB 目标输入]。返回的列状态为:“由于可能丢失数据,无法转换该值。”。
[OLE DB 目标 [59]] 错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “OLE DB Destination.Inputs[OLE DB 目标输入]”失败,因为出现错误代码 0xC0209077,并且“OLE DB Destination.Inputs[OLE DB 目标输入]”上的错误行配置指定错误时失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
*[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。在处理输入“OLE DB 目标输入”(72) 时,组件“OLE DB 目标”(59) 上的 ProcessInput 方法失败,错误代码为 0xC0209029。标识的组件从 ProcessInput 方法返回错误。该错误特定于组件,但该错误是致命错误,将导致数据流任务停止 运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
*
以前发生过,我通过创建一个新的 foreach 循环来处理新格式的新文件来绕过它(我看不到格式有任何变化,但这样做是为了继续)。
这是数据流的格式:
这是派生列的图像
如有任何帮助,我们将不胜感激!如果您需要我澄清任何事情,请告诉我。
您的列似乎处于不同的顺序。我用管道替换了标签并得到以下内容:
工作:
Staffordshire County Council|Staffordshire County Council Other|247 Cars Willenhall Ltd 15/06/2017|1126.97|Transport - Escorts|Transport - Escorts|opendatacommunities.org/id/county-council/staffordshire
不工作:
Staffordshire County Council|Childrens Services SEND|247 Cars Willenhall Ltd|273.42|06/07/2017|Transport - Escorts|Transport - Escorts opendatacommunities.org/id/county-council/staffordshire
第一个日期在金额的另一边,似乎包含在“247 Cars Willenhall Ltd”字符串中。
如果您通过右键单击最后两个组件之间的箭头并选择该选项来启用数据查看器,您将清楚地了解这如何影响您的数据流(而 running/debugging包)。
是的,所以我有一个 foreach 循环,其中的数据流通过一组格式完全相同的文件。这改变了派生列的一些内容,派生列全部转储到 SQL 服务器数据库中,这将成为我的暂存 table.
问题是有些文件会抛出错误,即使这些文件的格式完全相同,但错误总是在日期附近。它将毫无问题地通过 4 个文件,然后在第 5 个文件上它停止工作。
我想做什么?
- 我想获取大量相同格式的文件,并在更改某些格式的同时将其中的数据放入 SQL 数据库。
我尝试过什么?
- 我试图将日期重新格式化为 dd/mm/yyyy,这是我希望日期采用的格式。 重新格式化有效,但在出现类型转换错误之前,同一文件出现了错误。
这是我得到的错误: [OLE DB 目标 [59]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“转换规范的字符值无效”。
[OLE DB 目标 [59]] 错误:OLE DB Destination.Inputs[OLE DB 目标输入].OLE DB [=61= 上的列[数量] 出错][OLE DB 目标输入]。返回的列状态为:“由于可能丢失数据,无法转换该值。”。
[OLE DB 目标 [59]] 错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “OLE DB Destination.Inputs[OLE DB 目标输入]”失败,因为出现错误代码 0xC0209077,并且“OLE DB Destination.Inputs[OLE DB 目标输入]”上的错误行配置指定错误时失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
*[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。在处理输入“OLE DB 目标输入”(72) 时,组件“OLE DB 目标”(59) 上的 ProcessInput 方法失败,错误代码为 0xC0209029。标识的组件从 ProcessInput 方法返回错误。该错误特定于组件,但该错误是致命错误,将导致数据流任务停止 运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 *
以前发生过,我通过创建一个新的 foreach 循环来处理新格式的新文件来绕过它(我看不到格式有任何变化,但这样做是为了继续)。
这是数据流的格式:
这是派生列的图像
如有任何帮助,我们将不胜感激!如果您需要我澄清任何事情,请告诉我。
您的列似乎处于不同的顺序。我用管道替换了标签并得到以下内容:
工作:
Staffordshire County Council|Staffordshire County Council Other|247 Cars Willenhall Ltd 15/06/2017|1126.97|Transport - Escorts|Transport - Escorts|opendatacommunities.org/id/county-council/staffordshire
不工作:
Staffordshire County Council|Childrens Services SEND|247 Cars Willenhall Ltd|273.42|06/07/2017|Transport - Escorts|Transport - Escorts opendatacommunities.org/id/county-council/staffordshire
第一个日期在金额的另一边,似乎包含在“247 Cars Willenhall Ltd”字符串中。
如果您通过右键单击最后两个组件之间的箭头并选择该选项来启用数据查看器,您将清楚地了解这如何影响您的数据流(而 running/debugging包)。