【问题标题】:SSIS read flat file skip first rowSSIS读取平面文件跳过第一行
【发布时间】:2016-03-28 15:21:56
【问题描述】:

首先,我确实花了相当长的时间研究,我知道有很多相关的问题,虽然我找不到这个问题的正确答案。

我正在创建一个 SSIS 包,它执行以下操作: 1. 使用 HTTP 连接在本地下载和存储 CSV 文件。 2. 读取 CSV 文件并存储在 SQL Server 上。

由于我的平面文件的结构,平面文件连接不断给我错误,无论是在 SSIS 中还是在 SQL 导入向导中。

文件的结构是:

"name of file"
"columnA","columnB"
"valueA1","valueB1"
"valueA2","valueB2"

因此,行分母是行尾 {CR}{LF},列分母是逗号{,},带有文本限定符“。

我只想导入值,而不是文件名或列名。

我玩弄了这些设置,并通过以下设置获得了正确的预览(见下图)

- Header rows to skip: 0
- Column names in the first data row: no
- 2 self-configured columns (string with columnWidth = 255)
- Data rows to skip: 2

当我运行 SSIS 包或 SQL 导入向导时,我收到以下错误:

[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。这 平面文件源上的 PrimeOutput 方法返回错误代码 0xC0202091。 管道引擎调用时组件返回失败代码 素数输出()。故障代码的含义由 组件,但错误是致命的并且管道停止执行。 在此之前可能会发布带有更多信息的错误消息 关于失败。

我不知道出了什么问题以及我可以做些什么来使这个导入工作。

【问题讨论】:

  • 如果第一行包含列名,Header rows to skip 应该为 1 - 在本例中。 2 如果你不想要列名
  • 感谢您的快速回复。该包确实运行而不会引发错误,但不处理任何数据。在进度中我发现:“[平面文件源 [2]] 警告:读取标题行时到达数据文件的末尾。确保标题行分隔符和要跳过的标题行数正确。”
  • 那么您可能使用了错误的行分隔符 - 而不是 CRLF 使用 LF。您是否尝试预览数据?源的属性页中提供了“预览”按钮。如果设置正确,您将看到数据正确对齐的网格。如果没有,您将看到数据损坏或收到错误
  • 非常感谢@PanagiotisKanavos,这确实是问题所在。包现在运行完美,我确实看错了地方!

标签: sql-server ssis flat-file


【解决方案1】:

如果你想跳过文件名和列名,你需要将Header Rows to skip设置为2。你还应该检查文件是否真的使用换行符(LF)而不是CR+LF。在文本编辑器中检查换行符不足以检测到差异,因为大多数编辑器都能正确显示带有CR+LFLF 的文件。

您可以通过单击平面文件源中的“预览”按钮来检查设置结果。如果设置正确,您将看到数据正确对齐的网格。如果没有,你会得到一个错误,或者数据会以某种方式出错,例如非常多的列,第一个数据行中的列名等

【讨论】:

    猜你喜欢
    • 2017-05-16
    • 1970-01-01
    • 2018-06-11
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多