如何在 SSIS for Oracle 源中默认将 DT_STR 更改为 DT_WSTR

2024-01-26

我们的虚拟机(假设为 VM1)上有一个 SSIS 包,我们从 Oracle 源中提取数据。 Oracle 中该列的数据类型是 Varchar2,在 SSIS 中,它以 DT_WSTR 数据类型提取并将数据存储为 NVarchar 列。 当我从不同的虚拟机(假设为 VM2)打开相同的包时,SSIS 包将作为 DT_STR 数据类型拉取,并且由于 SSIS 包的验证阶段中的转换错误,该包失败。当我单击 Oracle 源 SSIS 包的数据流任务中的列时,我还收到粘贴在下面的警告。

警告 - 无法从 OLE DB 检索列代码页信息 提供者。如果组件支持“DefaultCodePage”属性, 将使用该属性的代码页。改变值 如果当前字符串代码页值不正确,则该属性。如果 该组件不支持该属性,代码页来自 将使用组件的区域设置 ID。

我们在 VM1 和 VM2 上安装了 Oracle Java(JDK) 和 Oracle 客户端。 我们的虚拟机上的操作系统是 Windows 7,两个虚拟机上的 SSIS 包都是 Visual Studio 2013。


我不得不处理 Oracle 和 SSIS 之间类似的数据类型问题。由于 SSIS 对数据类型如此挑剔,我必须找到一个在 Oracle 端实现的解决方案。

在解释我的答案之前,我应该提到我使用 Microsoft 的 Attunity Connectors for Oracle。我强烈建议使用这些连接器而不是 Microsoft 和 Oracle 提供的默认连接。

因此,话虽如此,我发现了两种似乎可以以正确的编码方式提取数据的技术。 SSIS 确实不擅长从 Oracle 系统读取和转换元数据,但显式转换为 VARCHAR2,即使该列已经是 VARCHAR2,似乎足以暗示 SSIS 知道该列将是 DT_STR 类型。在我的所有 Oracle Source 任务中,我使用 SQL 命令而不仅仅是选择表(这是最佳实践 https://learn.microsoft.com/en-us/archive/blogs/sqlcat/top-10-sql-server-integration-services-best-practices),这允许我将 CAST 添加到查询中。对于 VARCHAR2 列,我会执行以下操作:

SELECT CAST("PO Number" AS VARCHAR2(30)) AS "PONumber" FROM TABLE1

这通常就足够了。但有时不会,因为 Oracle 允许在 VARCHAR2 列中使用一些奇怪的字符。如果您看到错误[Oracle Source [2345]] Error: OCI error encountered. ORA-29275: partial multibyte character即使在将列显式转换为 VARCHAR2 之后,这也是由于代码页不匹配造成的。要纠正它,您可以像这样转换字符串的字符编码:

SELECT CONVERT("PO Number",'AL32UTF8','WE8MSWIN1252') AS "PONumber" FROM TABLE1

AL32UTF8是 Oracle 使用的默认 (Unicode) 编码,并且WE8MSWIN1252是 Windows 系统使用的默认 (ASCII 1252) 编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SSIS for Oracle 源中默认将 DT_STR 更改为 DT_WSTR 的相关文章

随机推荐

  • SQLite select语句优化建议

    我有一个 SQLite 表 详细信息 其结构 ID Name Category 1 Matt 0 2 Shervin 0 3 Bob 0 4 Lee 0 5 Rick 0 6 Suraya 0 7 Susan 0 8 Adam 0 9 Jo
  • 将字符串转换为日期时间时,毫秒精度正在改变

    我正在尝试将字符串转换为日期时间 如下所示select CONVERT datetime 31 05 2022 04 00 00 105 105 但毫秒的精度发生了变化 这怎么可能 就我而言 它给了我2022 05 31 04 00 00
  • 活动组示例

    任何人都可以给我一个 ActivityGroup 的例子吗 我听说通过使用 ActivityGroup 我们可以更改嵌套活动 保持 TabHost 不变 任何帮助将不胜感激 谢谢 大卫 布朗 大卫这是一个我发现有用的例子 http eric
  • 如何将库添加到 Eclipse CDT 管理的项目

    我正在使用Eclipse CDT 插件 http eclipse org cdt 编写简单的 C 程序 但我在文档中找不到有关如何执行以下操作的信息 Import C 标准库 http en wikipedia org wiki C sta
  • 更改 Google Maps Places API 中的默认文本“输入位置”

    我在互联网上寻找答案 试图找到我的问题的答案 我找到的最接近答案的是另一个 Stack Overflow 问题 在这里 如何更改 Google 地图 API 地点自动完成中的默认文本 https stackoverflow com ques
  • 我如何使用审计跟踪来显示哪些字段曾经被编辑过?

    对于我正在从事的一个项目 我被要求创建对记录所做的所有更改的审核跟踪 这是我第一次必须创建审计跟踪 因此我对此主题进行了大量研究 该应用程序将使用 PHP MSSQL 开发 并且流量较低 根据我的阅读 我几乎决定拥有一个审计表并使用触发器来
  • NetworkX:从节点属性向图中添加边

    我的节点有一个用逗号分隔的属性列表 我希望 networkx 比较它们 如果它们匹配 则在节点之间创建一条边 这就是我所得到的 但它不起作用 关于如何改进我的方法有什么想法吗 for node in G nodes while len G
  • Jenkins矩阵项目组合过滤器——如何配置groovy表达式?

    我有一个带有两个轴的 Jenkins 多配置项目 sbBrowser具有值 firefox ie chrome envConfig具有值 pp1 pp2 pp3 staging systemtest 我必须创建组合过滤器才能仅运行sbBro
  • 使用实体框架同步记录

    我正在尝试获取 SQL 服务器的功能MERGE http technet microsoft com en us library bb510625 aspx实体框架中的语句 在 WCF 服务中 我从客户端应用程序接收记录列表 我想将列表中所
  • 堆栈条形图缩放后,Flot 返回不正确的 x 值(mm/dd/yy - 日期)

    我想在用户缩放图表并单击特定栏时获得正确的 x 轴标签 当单击 02 14 14 xaxis 上的栏时 警报会显示 02 19 14 xaxis 标签 当缩放 选择 未触发时 它会返回正确的日期 但在缩放图表并单击栏后 它会填充错误的日期
  • Ubuntu:dpkg --add-architecture i386 抛出错误 --add-architecture 未知选项

    我想在我的 64 位机器上启用额外的架构 32 位 我做到了dpkg 打印架构了解已知的架构 即 amd64 之后我做了dpkg print foreign architectures并得到结果为 i386 我想启用它 但是当我输入时dpk
  • F# 使用 match 来验证参数

    我正在学习 F 我想知道验证输入参数的最佳实践 我天真地以为我可以做这样的事情 let foo match bar with
  • 如何针对 MDF 文件运行 SQL 脚本?

    我使用 Entity Framework 4 0 使用模型优先方法创建了一个数据库模型 然后我使用以下命令创建了一个sql脚本从模型生成数据库 我还在 App Data 文件夹中创建了一个 SQL Server 数据库文件 现在如何针对此
  • Karaf 和 OBR 中的功能有什么区别

    我正在研究部署和更新 OSGI 特别是 Karaf 应用程序的方法 似乎有几种选择 一是使用 OSGi Bundle Repository OBR 二是使用 Karaf 中的 Features 三是使用卡拉夫洞穴 http karaf ap
  • Spring Data Neo4j - @RelationshipType 问题

    当关系类型用 a 注释时 我很难检索关系 RelationshipType field 这些关系在 Neoclipse 中看起来正确 但我在应用程序中没有检索到任何结果 不起作用的代码是 简化的 NodeEntity public abst
  • 在 Chrome 的脚本调试器中隐藏范围变量工具提示

    当我在 Chrome 的 JavaScript 调试器中单步执行代码时 我经常遇到这样的情况 变量工具提示卡住并停留在屏幕上 遮盖了其背后的代码 单击工具提示或其他范围变量没有帮助 解决此问题的唯一方法通常是关闭并重新打开检查器窗格 这会结
  • 如何在 React JS 中将 Image-Url 分享到 Facebook、Twitter 和 Instagram

    我有一个页面 用户可以在其中上传图像并使用一个 Api 进行编辑 现在使用收到的 URL 格式的图像 需要在 Facebook Twitter 和 Instagram 等社交媒体上共享 以下是用于社交媒体重定向的 URL Facebook
  • 从 ADODB 记录集中复制数据时,Excel 表丢失数字格式

    我正在更新 Excel 表ADODB记录集使用CopyFromRecordset方法 更新后 只要有数字列 数字就会显示为日期 我到目前为止使用的解决方法是将列的格式设置回数字VBA 但这不是一个好的解决方案 因为报告需要更多时间才能完成
  • Logstash 配置,“如果字符串包含...”

    因此 我们假设我有一部分日志行 如下所示 GET restAPI callMethod1 8675309 GET 匹配一个 http 方法 并且 get 被提取 其余部分匹配一个 URI 并且也被提取 现在在logstash配置中 假设我想
  • 如何在 SSIS for Oracle 源中默认将 DT_STR 更改为 DT_WSTR

    我们的虚拟机 假设为 VM1 上有一个 SSIS 包 我们从 Oracle 源中提取数据 Oracle 中该列的数据类型是 Varchar2 在 SSIS 中 它以 DT WSTR 数据类型提取并将数据存储为 NVarchar 列 当我从不