Jua*_*lez 9 ssis type-conversion
我正在创建一个包,我将在其中将数据从数据库导出到一个空的 excel 文件中。当我只添加源和目标组件并运行包时,我收到一个转换错误,指出输出列和列“A”无法在 unicode 和非 unicode 字符串数据类型之间转换。
为了解决这个问题,我添加了一个数据转换组件并将所有列转换为
“Unicode 字符串 [DT_WSTR]”
我不再收到错误。唯一的问题是我有大约 50 列,我必须在其中 1 x 1 并从下拉列表中选择“Unicode 字符串 [DT_WSTR]”。然后我必须进入目标组件并将新转换的列映射到我的 excel 文件。
我的问题是,如果其他人遇到过这种情况,是否有更好更有效的方法来避免必须进行所有手动数据类型转换?必须一一转换和映射所有列似乎不切实际,尤其是当您有大量行时。
我知道 excel 文件不是导入和导出数据的最佳方式,但这是在这种特殊情况下所需要的。
我可能会寻找一种仅导出到纯文本文件的方法,然后尝试将其转换为 excel 作为包中的最后一步。我希望这不会触发相同的 unicode/nonunicode 转换错误。
bil*_*nkc 16
作为 RDC 的替代方案,我只是跳过在 SSIS 中转换数据类型,并在源查询中将它们显式转换为 nvarchar。
在您的源查询中(并且您正在使用源查询,而不是简单地在下拉列表中选择表),将内容显式转换为适当的 n(var)char 长度。
代替
SELECT
E.BusinessEntityID
, E.NationalIDNumber
, E.LoginID
, E.JobTitle
, E.BirthDate
, E.MaritalStatus
, E.Gender
FROM
HumanResources.Employee AS E
Run Code Online (Sandbox Code Playgroud)
使用查询,例如
SELECT
CAST(E.BusinessEntityID AS nvarchar(10)) AS BusinessEntityID
, CAST(E.NationalIDNumber AS nvarchar(15)) AS NationalIDNumber
, CAST(E.LoginID AS nvarchar(256)) AS LoginID
, CAST(E.JobTitle AS nvarchar(50)) AS JobTitle
, CAST(E.BirthDate AS nvarchar(10)) AS BirthDate
, CAST(E.MaritalStatus AS nchar(1)) AS MaritalStatus
, CAST(E.Gender AS nchar(1)) AS Gender
FROM
HumanResources.Employee AS E
Run Code Online (Sandbox Code Playgroud)
AdventureWorks 的精明学生会认识到数据已经是一种n(var)char类型,但这仅仅是为了演示这个概念。
Data Conversion ComponentSSIS 中的分配和存储“相同”数据的两个副本| 归档时间: |
|
| 查看次数: |
67007 次 |
| 最近记录: |