类型转换在本地PC和服务器环境之间更改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型转换在本地PC和服务器环境之间更改相关的知识,希望对你有一定的参考价值。
我从SQL表中获取一些简单的数据,进行小的转换并将其转换为Unicode。然后我将其输出到Oracle服务器上的Oracle CHAR(1 byte)
字段中。
这在我的本地PC上没有任何错误。然后我部署到服务器,它说
“列”“无法在unicode和非unicode字符串数据类型之间进行转换”。
在尝试了几件事之后,我把手举到空中,然后把data conversion
拿出去unicode,现在它坏了,不会在我的电脑上运行。
但是 - 它现在可以在服务器上运行,并且很开心。我搜索过并发现其他人遇到了这个问题,但似乎没有人找到原因,只是以其他方式解决问题。
为什么我的PC和我的服务器工作不一样?所有表和数据连接都是相同的。除执行地点外无其他变化。
答案
我的SSIS包中遇到了同样的问题,但没有找到解决方案。
这是一个简单的数据,不包含任何unicode字符,如果使用SQL查询或.net代码转换它,它不会抛出任何异常...但是当使用Data Conversion Transformation
时它会在SSIS中引发异常
解决方法
我做了一个简单的解决方法来实现这一点(如果再次出现此错误,您可以使用它)
- 我用
Data Conversion
替换了Script Component
组件 - 我将要转换的列标记为输入
- 对于我想要转换的每一列,我创建了一个
DT_WSTR
类型的输出列 - 在每列的脚本中,我使用了以下代码:(假设输入为
inColumn
,输出为outColumn
)If Not Row.inColumn_IsNull AndAlso _ Not String.IsNullOrEmpty(Row.inColumn) Then Row.outColumn = Row.inColumn Else Row.outColumn_IsNull = True End If
要么
如果源是OLEDB Source
,你可以在OLEDB source command
中使用强制转换函数
例如:
SELECT CAST([COLUMN] as NVARCHAR(255)) AS [COLUMN]
FROM ....
以上是关于类型转换在本地PC和服务器环境之间更改的主要内容,如果未能解决你的问题,请参考以下文章
在默认类型和 C 互操作类型之间转换 Fortran 字符和逻辑数组