问题标签 [ssis-data-types]

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 回答
142 浏览

ssis - 使用字符串“NULL”值更改 SSIS 平面文件数据的数据类型

在我的 SSIS 项目中,我必须从一个平面 csv 文件中检索我的数据。数据本身看起来像这样:

AccountType,SID,PersonID,FirstName,LastName,Email,Enabled
NOR,0001,0001,Test,Test0001,Test1@email.com,TRUE
NOR,1001,NULL,Test,Test1002,Test2@email.com,FALSE
TST,1002 ,NULL,Test,Test1003,Test3@email.com,TRUE

我需要读取这些数据并确保它具有正确的数据类型以供将来检查。这意味着 SID 和 PersonID 应该有一个数字数据类型,启用应该是一个布尔值。但我想保留与源文件相同的列和名称。

似乎通过“平面文件源”任务读取此数据的唯一正确方法是字符串。否则我会不断收到错误,因为“NULL”实际上是一个字符串,而不是一个 NULL 值。

接下来,我执行派生列转换以消除所有“NULL”值。例如,我对 PersonId 使用以下表达式:

(TRIM(PersonID) == "" || UPPER(PersonID) == "NULL") ? (DT_WSTR,50)NULL(DT_WSTR,50) : PersonID

我想通过在上面的表达式中添加它来立即将其转换为正确的数据类型,但是当我在派生列下拉框中选择“替换 'PersonId'”时,似乎不可能为同一列选择另一个数据类型。

所以接下来我想到了使用旁边的数据转换任务来更改这些列的数据类型,但是当我使用它时它只会创建新列,即使我输入输出别名以保持不变。

如何更改我的解决方案以有效且正确地读取此数据并将其值转换为正确的数据类型?

0 投票
0 回答
185 浏览

c# - 使用 SSIS 数据流任务中的脚本组件将对象中的数据提取到 DataTable

我正在寻找一种在 SSIS 数据流任务中使用脚本组件(作为源)来输出从对象数据类型生成的表的方法。以下是我尝试过的

我的脚本组件属性

在此处输入图像描述

我的脚本

我面临的问题

当我运行包时出现以下错误,我尝试了一些我看到的相关问题的修复,但没有一个有效

在此处输入图像描述

我怀疑问题出在我脚本的以下部分(为什么因为当我删除它并运行它时没有抛出任何错误)

任何线索或指导将不胜感激。