【问题标题】:SQLSTATE HY104; INVALID PRECISION VALUE. ERROR IN PARAMETERSQLSTATE HY104;无效的精度值。参数错误
【发布时间】:2020-11-09 11:05:26
【问题描述】:

我正在使用 SSIS 进行 ETL。源数据库和目标数据库是 Oracle。 当我通过 SQL 代理运行作业时,它会提示我以下错误:

此表包含 5 个日期列,这些列会导致此问题。

我已经尝试了所有可能的解决方案,但没有奏效。这似乎不是数据问题,因为我在那些完美运行的选择性日期重新运行工作。满载时失败。

【问题讨论】:

  • '无效的日期时间格式'似乎是罪魁祸首。尝试打开并运行包,例如Visual Studio (BIDS) 一步一步(添加一些断点)。
  • 我更新了我的问题。日期数据类型存在空问题。
  • 理论上可以使用5-digit years into Oracle 或使用较旧的 JDBC 驱动程序(但如果您能提供帮助,请不要这样做)。最好对您的数据进行清理,以便为这些日期输入合理的值。

标签: oracle ssis odbc date-format


【解决方案1】:

底部的错误信息是:

Data Flow: Task:Error: SQLSTATE 22007, Message: [Microsoft][ODBC Oracle Wire Protocol driver]Invalid datetime format. Error in parameter 17.

您有一个Invalid datetime format。您需要通过更正您正在使用的数据或格式模型来修复它,但由于您没有包含任何代码,我们无法提供进一步的帮助。

【讨论】:

  • 我已经更新了我的问题。附加了代码和数据结果的第二个快照。我做了一些工作,发现空值存在一些问题。不是空值和格式是好的。没有空值,数据就会传播。对于空值,我尝试使用 nvl() 函数来替换空值,但它也没有帮助。如果你看到快照。与年份一样,有针对“10000”的空值。这对于 DATE 数据类型是不可能的。
【解决方案2】:

我也有类似的问题,不同的是我的源是 SQL Server 数据库,目标是 Oracle 数据库。 我先将源 DateTime 列转换为 String 类型,然后将它们成功加载到目标日期列。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 2017-10-15
    • 2014-07-21
    • 1970-01-01
    • 2022-08-05
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    相关资源
    最近更新 更多