如何替换ssis包中的unicode字符

问题描述 投票:3回答:1

我正在尝试将DAT文件加载到sql server table。在文件的特定列中具有�的DAT文件的特定列。我正在尝试使用派生列转换中的表达式替换此字符。以下是表达方式。

(DT_STR,1000,1252) REPLACE( [Comments] ,N'�','') 

这是投掷错误,表达没有得到评估。有人可以帮我吗非常感谢

sql-server unicode ssis etl flat-file
1个回答
0
投票

我认为你应该尝试两种方法:

(1) Changing the file encoding

正如评论中所提到的,是所选编码中无效字符的替代。

首先,检查列数据类型是否为DT_WSTR而不是DT_STR **

另外,尝试将编码设置为Unicode或尝试使用编码检测工具,例如:

但我不认为直到现在有一​​个强大的编码检测应用程序或库,其中支持所有编码

要更改平面文件连接管理器编码,可以选中Unicode复选框或从下拉列表中选择代码页:

enter image description here

(2) Removing unwanted characters

如果您没有编码问题并且您知道正确的文件编码,如果文件创建没有正确完成,这些字符没有意义且无法恢复,您必须检查文件创建操作并检查是否存在数据源编码或排序规则与平面文件编码之间的问题或区别。

或者您应该使用脚本组件或派生列删除这些字符:

(DT_WSTR,1000)REPLACE([Comments] ,"�","") 

*注意:不要在N标记之前使用文字,也不要转换为DT_STR,因为它可能是其他无法转换的unicode字符。

附加信息

© www.soinside.com 2019 - 2024. All rights reserved.