oracle - 将数据从 Oracle 移动到 Sybase - 字符串问题
问题描述
在我们的 DTS 包中,我们将数据从 Oracle 列VARCHAR2(50 CHAR)
(Unicode) 复制到 Sybase 列VARCHAR(50)
(Nonunicode)。来源是 Oracle DB,我们从 sql 查询中选择数据。
下一个是数据转换,我们将数据转换为STRING[DT_STR] 50
(CODE PAGE 1250)。最后是插入到 Sybase 表列的数据Varchar(50)
。但运行后我们只看到空列,没有原始值。
错误可能在哪里?
更新 1
如果我SELECT @@VERSION
在 Sybase 服务器上执行,我会得到以下信息:
Adaptive Server Enterprise/15.7/EBF 21520 SMP SP102 /P/ia64/HP-UX B.11.31/ase157sp101/3445/64-bit/FBO/2013 年 7 月 13 日星期六 05:47:31
我正在使用 OLEDB Provider 连接到 Sybase 目标
解决方案
使用 ADO.Net 而不是 OLEDB
根据您的评论,您似乎正在使用 OLEDB Provider 连接到 Sybase。连接到 Sybase 的首选方法是使用 ADO.Net 提供程序而不是 OLEDB。
Sybase OLEDB 提供程序问题
通过网络上的小搜索,您可以意识到 Sybase OLEDB 提供程序在 SSIS 中使用时可能会导致几个问题,例如:
Sybase ADO.NET
ADO.Net 是从 SSIS 连接到 sybase 的正确方法。
在以下官方文档中,他们提到:
Adaptive Server ADO.NET 数据提供程序可以集成到 SQL Server 集成服务 (SSIS) 中,从而允许对 ADO.NET 数据提供程序功能进行本机访问。
通过集成,您可以将 Adaptive Server 用作:
- ADO.NET 连接管理器
- ADO.NET 源数据流组件
- ADO.NET 目标数据流组件
同样在官方下载页面中,他们没有提到 OLEDB 提供程序,但他们提到了 ADO.NET
使用 Sybase ADO.Net 数据提供程序的分步指南
您可以查看以下链接:
解决方法
如果 ADO.Net 不起作用,请检查该问题是否不是由 Sybase 目标中不支持的某些 unicode 字符引起的。
尝试添加脚本组件,添加类型为 Output 的列DT_STR
,然后使用以下代码:
Row.outColumn = Encoding.GetEncoding("Windows-1250").GetString(Encoding.GetEncoding("Windows-1250").GetBytes(Row.inColumn))
并映射outColumn
到目的地。
推荐阅读
- php - PHPMailer 不会发送电子邮件
- ios - 如何解决 --Ignored(用于导致先前/过多的 GPU 错误)(IOAF 代码 4)
- java - SharedClassURLHelperImpl 上的线程块
- php - 使用 PHP Mailer 发送电子邮件
- laravel - Laravel Eloquent 错误(SQLSTATE [22P02]:无效的文本表示:7 错误:整数的输入语法无效)
- java - 为我的程序重新绑定 alt f4
- php - 使用附加保存数据透视表时,Laravel 模型突变器不起作用
- google-cloud-platform - 如何备份谷歌kubernetes引擎的ETCD?
- google-apps-script - Apps 脚本(Google 表格):copyTo 功能(粘贴值)不起作用
- cordova - IBM Mobile First - 注册应用程序时的范围元素映射