【问题标题】:Oracle & SQL Server Dataset comparisonOracle 和 SQL Server 数据集比较
【发布时间】:2011-08-31 14:56:20
【问题描述】:

我正在尝试在来自两个不同数据库的两个数据集之间进行 C# 数据集 caparison。数据集一来自 Oracle,数据集二来自 SQL Server,我在运行 ETL 作业以将数据从 Oracle 移动到 SQL Server 以验证结果后比较这些数据集。我遇到的问题是 SQL Server 中的数据匹配,但日期从源到目标的格式不同,而且小数点四舍五入。

有没有人有一个很好的方法来规避这个问题。我正在考虑从填充数据集的源表和目标表中更改我的查询以格式化日期等...这样比较会更容易,但我想看看还有其他方法吗?

【问题讨论】:

  • 谢谢米奇,我正在做一个数据集到数据集的比较,实际上不需要对数据集做任何事情,除了填充它们然后进行比较,所以我不打算映射它们而不是验证检查 ETL。

标签: c# sql-server oracle


【解决方案1】:

对于日期格式,将 NLS_DATE_FORMAT 环境变量设置为所需的格式。这假设您捕获字符串中的数据。 Oracle 会将日期格式化为您指定的格式。对于小数点四舍五入,我不明白。这些数字应该相同。如果您得到一个小数点并想要一个逗号,请使用 NLS_MUMERIC_CHARACTERS 'DG' 来选择要使用小数点或组分隔符的字符。

例如 '.,' 选择一个 '.'小数点和逗号作为组分隔符。

环境变量可以从客户端操作系统设置,也可以从 Oracle 会话中设置。为此,请发出 alter session set nls_date_format = 'YYYYMMDDHH24MISS'; 或任何最适合您的格式。

【讨论】:

  • 谢谢伙计,我从 Windows Box 连接到 Oracle,然后在这台机器上使用 Oracle 和 SQL Server 的两个数据源进行 C# 比较。我可以在 Windows 机器上设置 NLS_DATE_FORMAT 环境变量还是这个 Unix 特定的?我无权访问物理 Oracle 机器来更改任何配置?
  • 您好,您也可以在您的客户端上执行此操作,没问题。它甚至可以在会话中完成:alter session set nls_date_format = 'yyyymmddhh24miss',如果你想这样做的话。我为此编辑答案。
  • 谢谢伙计,我会试试这个。干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 2011-05-30
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 2013-04-09
  • 2011-06-15
相关资源
最近更新 更多