Jus*_*ier 6 ssis data-migration advantage-database-server
所以我目前正在使用SSIS 2008从旧的Advantage数据库服务器迁移到SQL 2005.旧的Advantage数据库中的一个列是MEMO类型.默认情况下,这会转换为DT_TEXT列.好吧,在新数据库中,我不需要这么大的字段,但可以将其限制为诸如VARCHAR(50)之类的东西.我成功设置了一个派生列转换,使用以下表达式对其进行转换:
(DT_STR,50,1252)[ColumnName]
Run Code Online (Sandbox Code Playgroud)
现在我想更进一步,用空字符串替换所有NULL值.使用ISNULL([ColumnName])?"":(DT_STR,50,1252)[ColumnName]表达式似乎很容易,但问题是OLE DB目标包含以下错误
无法在unicode和非unicode字符串之间进行转换...
显然,整个ISNULL表达式将数据类型转换为Unicode字符串[DT-WSTR].我已经在整个表达式或不同的部分上尝试了各种演员表,但我无法获得与我需要的数据类型相匹配的数据类型.
首先,是否可以将DT_TEXT类型直接转换为unicode?据我所知,演员阵容不会这样.如果没有,有没有办法让表达式工作,以便将NULL值转换为空字符串?
谢谢你的帮助!
我想出了一些可行的办法。这可能不是最好的解决方案,但它适合我的情况。
从我的 OLE DB 源中,我首先创建了一个派生列。我使用了 ISNULL,最终将其转换为 DT_WSTR unicode 类型。尽管我无法进行任何转换以将其恢复为所需的类型,但我随后在派生列和 OLE DB 目标之间添加了数据转换转换。这将获取输入字符串并将其转换回 DT_STR。这一切都让人感觉有点烦人,多次转换,但该专栏不包含任何我应该担心的时髦信息,所以我想它会起作用。
感谢所有思考该解决方案的人,如果您找到一些很棒的方法来解决它,我将非常感兴趣。
| 归档时间: |
|
| 查看次数: |
7865 次 |
| 最近记录: |