问题标签 [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.
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'”时,似乎不可能为同一列选择另一个数据类型。
所以接下来我想到了使用旁边的数据转换任务来更改这些列的数据类型,但是当我使用它时它只会创建新列,即使我输入输出别名以保持不变。
如何更改我的解决方案以有效且正确地读取此数据并将其值转换为正确的数据类型?