问题标签 [flatfilesource]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
76 浏览

ssis - SSIS:平面文件连接管理器无法正确读取固定宽度的 txt 文件

我需要从一个固定宽度的 txt 文件中读取数据,该文件将放在服务器上,并通过 SSIS 包将该数据写入 SQL 表。问题是,当我在记事本中打开 txt 文件时,数据似乎未格式化(即使在自动换行之后,第一行也似乎失真):

原文件截图:

在此处输入图像描述

但是当我从记事本复制数据,将其粘贴到写字板中时,数据似乎格式完美。因此,当我将此写字板数据保存为 .txt 并在我的 SSIS 包中使用它时,该包可以完美运行。但是当我使用上面截图所示的原始文件时,SSIS 无法读取它。

格式化文件截图:

在此处输入图像描述

我是 SSIS 的初学者,并且在这个问题上坚持了很多天。任何形式的帮助将不胜感激。

0 投票
0 回答
138 浏览

ssis - SSIS:平面文件源将其转换为两个 OLE DB SQL 表(在加载到 OLEDB 源之前转换和排序时抛出错误)

我正在尝试获取一个平面文件并将其转换为 SSIS 中的两个表并加载到 OLEDB 源 (SSMS)。我已经在 SSMS 中创建了与行由 , 分隔的平面文件匹配的表。我必须进行数据转换转换,因为平面文件数据类型与我在 SSMS 的表中设置的 nvarchar 数据类型不同。我当前的包遇到了一些障碍,并且在加载到目标之前无法将数据加载到 OLEDB 中而不抛出一些错误。

我在 SSMS 中设置的两个表。一个有一个主键(Unique_ID),并且该主键在另一个表中引用相同的外键(Unique_ID)

现在在我的控制流上

执行 SQL 任务以在新加载之前截断表 -> 每个新表的两个数据流任务

我为第一个表设置的数据流任务是 -> 1.Txt 文件平面源 2.Data Conversion to convert String[DT_STR] to Unicode String [DT_WSTR] 3.Sort -> 我认为会从数据转换,但行仍在重复,这在到达目标之前引发错误(我检查了复选框以删除重复的排序值) 4.OLE DB 目标

错误是:“OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“违反主键约束 'PK'。无法在对象“dbo.”中插入重复键。重复键值为 (123)."。

在数据查看器中,我不需要的重复记录导致主键约束例如:

数据转换
.sequence 123 姓 名
123 姓 名

第二个数据流任务类似于第一个,只是目标中的表和我使用的列不同。

我查看了很多帖子并研究了这个问题。我是使用 SSIS 的新手,并且从性能角度寻找将这两个新表加载到 OLEDB 目标中的最佳方法。任何建议将不胜感激。

我需要回答的几个问题:

1.在我执行一个包之前,我可以在我的两个表之间设置主键和外键吗?我能够将平面文件加载到我的两个表中,而没有主键和外键引用第二个表中的主键。我需要能够在将来加入这些表,所以我需要保持两个表之间的引用完整性。2. 我在 SSIS 中以正确的方式进行当前正在执行的转换吗?我不能使用查找转换,因为源(平面文件)和目标(OLEDB 源)之间的数据类型不同

如果您需要我提供有关我使用的包或平面文件的更多详细信息以及我的表是如何在 SSMS 中设置的,我可以提供更多详细信息。

0 投票
2 回答
162 浏览

while-loop - SSIS - 如何从平面文件插入到具有日期范围的 OLE DB?

我有一个平面文件源,其中的列每行都有开始日期和结束日期,而我尝试插入的表只有一个日期列,这意味着我必须从开始日期到结束日期每周插入 1 行.

样本 FF 来源:
Col1,StartDate,EndDate,Col4
1234,7/10/2018,28/10/2018,1.000

要插入到表中的行:
+------+------------+-------+
| Col1 | 日期 | Col4 |
+--------+------------+--------+
| 第1234章 2018 年 7 月 10 日 | 1.000 |
| 第1234章 2018 年 10 月 14 日 | 1.000 |
| 第1234章 21/10/2018 | 1.000 |
| 第1234章 2018 年 10 月 28 日 | 1.000 |
+--------+------------+--------+

0 投票
1 回答
411 浏览

sql-server - 从 CSV 读取的带小数点的潜在数据丢失

我已经阅读了大量关于此的问题和答案,但我仍然无法让它发挥作用。我有一个如下的csv:

当我在 SSIS 中附加一个Flat File Source, 时,它给了我以下信息:

[示例 CSV [2]] 错误:数据转换失败。列“Field3”的数据转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换该值。”。

我已经DT_DECIMAL在高级属性中将输出更改为 5 作为比例值,但我仍然得到相同的错误。

对此有任何线索吗?

这似乎是一个我以某种方式忽略的简单解决方案。

谢谢!

0 投票
1 回答
68 浏览

sql-server - 如何根据平面文件的名称将平面文件加载到 SQL Server 表中?

有数百个平面文件

  • 对于每个文件,我需要在 SQL-server 中创建一个表并将文件内容输入到表中

    /li>

如何在 SSIS 中实现这一点。

Ps:我是这一切的初学者。

0 投票
2 回答
936 浏览

sql-server - 如何使用 SSIS 导入没有列标题的平面文件?

我想使用 SSIS 导入平面文件。我的平面文件有 50 列,但没有列标题。所以它显示为第 0 列、第 1 列等。我不想使用高级编辑器手动分配列名。有没有办法动态分配 50 个列名。所以 Column 0 = Client , Column 1 = Date 等等。

0 投票
1 回答
371 浏览

csv - SSIS平面文件连接

我得到一个平面文件,如下所示。我一直在使用 ssis 来加载这些数据。它有 9 个动态列名,只有前三列有行数据,其余的没有任何数据。

在平面文件连接管理器中。我选择了:

  • 行分隔符为 {CR}{LF}
  • 列分隔符为逗号 {,}

文件内容:

当我运行包时,数据如下所示

0 投票
2 回答
972 浏览

csv - 通过 SSIS 将 datetimeoffset 从 csv 文件导入表的问题

我有一个 csv 作为源文件,我正在尝试将此文件中的数据加载到暂存 SQL 服务器表中。有三个日期列。下面是这些列的值的示例:

在 SQL 服务器端,我已定义datetimeoffset(7)为数据类型,并在 SSIS 连接管理器中选择database timestamp with timezone [DT_DBTIMESTAMPOFFSET]了数据类型。但是我在导入日期时间列时遇到以下错误:

数据转换失败。列“column1”的数据转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换该值。”。

错误:数据流任务中的 0xC0209029,平面文件源 [2]:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“Flat File Source.Outputs[Flat File Source Output].Columns[column1]”失败,因为发生错误代码 0xC0209084,并且“Flat File Source.Outputs[Flat File Source Output].Columns[column1]”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。错误:数据流任务中的 0xC0202092,

平面文件源 [2]:在数据行 2 上处理文件“\path to file.csv”时出错。错误:0xC0047038 在数据流任务,SSIS.Pipeline:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。平面文件源上的 PrimeOutput 方法返回错误代码 0xC0202092。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

你如何解决它?或者为什么我会收到这个错误?

0 投票
1 回答
18 浏览

dynamic - 每个循环上具有不同列的相同文件名

我有一个 foreach 循环,它查找相同的文件名,但对于每次传递,文件会以不同的列填充。我的平面文件源在尝试读取新的重建文件时会引发错误 - 我有点期待我的记录集目标也会引发错误。

我正在使用平面文件源和记录集目标。我在想我应该为此使用另一个脚本任务,但如果有办法让它与这两个任务一起工作,那就太好了

我想用不同的列重用相同的文件名

0 投票
0 回答
736 浏览

oracle12c - 元数据列名称与 Informatica 电源中心中的源列名称不匹配

我正在使用 Informatica 将 CSV 平面文件中的数据加载到目标 oracle DB。平面文件包含阿拉伯列名,我碰巧使用双引号创建了具有相似列名的表。但是在运行地图时,它给了我上述错误,即元数据列与源列名不匹配。

如果我将目标表中的列名更改为英文,则一切正常。

我发现它目前是 Informatica 中的一个错误,将在下一个版本中解决。我们使用 Informatica 10.2 和 oracle 12c 作为目标。