首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSIS数据源在Oracle数据库中为单字节时将字符串列显示为DT_WSTR

SSIS数据源在Oracle数据库中为单字节时将字符串列显示为DT_WSTR
EN

Stack Overflow用户
提问于 2016-05-17 14:29:24
回答 2查看 3.9K关注 0票数 3

我正在开发一个SSIS包,用于从Oracle 11g数据库中的表中提取数据,并将其加载到Server 2014数据库中的表中。

Oracle数据库中的表具有定义为VARCHAR2 (单字节/代码页8859-1)的字符串列;Server数据库中的表有定义为VARCHAR (单字节)的字符串列。

但是,当我将OLE DB源代码/ ADO .NET源代码添加到SSIS包并将其配置为从Oracle中的表中选择列时,外部列(高级编辑器)将字符串列显示为DT_WSTR (Unicode)。

甲骨文 (请参阅“Oracle支持工作方式”一节)建议“当客户端字符集不是服务器字符集的超集或数据库字符集是多字节字符集时,OraOLEDB自动启用Unicode模式。”

如何让OraOLEDB提供程序/ single数据源将源中的字符串列公开为单个字节?

我试过的

  • 将AlwaysUseDefaultCodePage属性( OLE DB Source的属性)设置为true,将DefaultCodePage属性设置为1252 (8859-1是该属性的子集)。
  • 将AlwaysUseDefaultCodePage属性( OLE DB Source的)设置为true,将DefaultCodePage属性设置为28591 ( 窗口等效为8859-1)。
  • 重新安装Oracle客户端。

约束条件

  • 我正在传输2M+行,该包执行的持续时间是一个问题。理想情况下,我不希望将Unicode >非Unicode数据转换转换添加到可能对性能产生负面影响的数据流中。
  • 我无法控制Oracle服务器/数据库配置。

环境配置

Windows客户端

  • Windows 7 Pro
  • 投标/ 2013
  • Oracle客户端11g第5版(32位仅- 64位客户端未安装)
  • Oracle NLS_LANG = ENGLISH_UNITED KINGDOM.WE8MSWIN1252 (在Wow6432Node注册表中设置-没有覆盖环境变量)

SSIS包/数据流任务/ OLE DB数据源

LocaleID =英语(联合王国)

客户端会话连接信息

代码语言:javascript
复制
SELECT * FROM V$SESSION_CONNECT_INFO
  • CLIENT_CHARSET = UTF8 (当使用完整即时客户端从SSIS调用查询时)
  • CLIENT_CHARSET =未知(当使用jdbc瘦从SQL调用查询时)

Oracle服务器

代码语言:javascript
复制
SELECT * FROM SYS.NLS_DATABASE_PARAMETERS
  • NLS_LANGUAGE =英语
  • NLS_TERRITORY =联合王国
  • NLS_CHARACTERSET = WE8ISO8859P1
EN

回答 2

Stack Overflow用户

发布于 2016-08-23 13:04:34

正如您已经注意到的,当客户端的字符集不是数据库的超集时,Oracle使用"unicode mode“,数据库的字符集绝对是WE8ISO8859P1。你当事人的字符集还没有确定。客户端会话连接信息不是可靠的来源。

环境变量NLS_LANG重写注册表设置(如果有的话)。要确保OraOLEDB客户端使用所需的NLS_LANG值,请确保执行SSIS包的用户具有该环境变量集。您可以通过编辑HKEY_USERS\<that user's id>\Environment\NLS_LANG来实现这一点。我建议从使其与数据库WE8ISO8859P1相等开始,以排除WE8MSWIN1252不被视为Oracle的超集。

关于的优秀文章。

票数 1
EN

Stack Overflow用户

发布于 2016-05-27 17:32:05

使用高级编辑器(右键单击组件将其显示为选项),您可以手动设置列的输出类型。见以下条款:

http://www.sqlservergeeks.com/sql-server-data-type-conversion-options-in-ssis/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37279041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档