Oracle SSIS 简单查询 - "Literal does not match format string"

Oracle SSIS Simple Query - "Literal does not match format string"

我有一个 SQL 服务器集成服务 ETL 项目,用于从 Oracle 数据库获取数据。我正在使用 ODBC 源组件,并配置了连接管理器并正常工作。

在 ODBC 源代码中,选择连接管理器后,我在下拉列表中获得了所有表和视图。 问题是这样的:我无法从某些 视图中获取数据。我收到此错误:

即使我写了一个简单的 SQL 命令,我也会得到同样的错误。

SELECT * FROM "SchemaName"."ViewName"

但是,如果我转到“列”选项卡,所有列都显示正确映射。

我已经检查了 Oracle 端的权限,一切似乎都正常。我可以在同一架构中查询其他视图,但其中一些会给我这个错误。 如您所见,我没有指定任何类型转换,而且我正在查询的视图没有日期列。

有谁知道为什么特定视图会出现此错误? 谢谢

编辑:查询在 Oracle 中运行良好,因此问题不在视图定义中。

此错误可能发生在执行视图 SQL 时,而不是在 ODBC 中,并且发生在一个或多个无效值无法转换格式的情况下。通常这发生在字符串到日期的转换中。我可以使用以下脚本复制它。

> SQL> create table mytemp(x varchar2(10)); 
> Table created.
> 
> SQL> create or replace view myview as select to_date(x,'yyyy/mm/dd')
> xdat from mytemp; 
> View created
> 
> SQL> insert into mytemp values ('1965/12/12'); 
> 1 row created.
> 
> SQL> commit; 
> Commit complete.
> 
> SQL> select * from myview;
> 
> XDAT     
> ---------  
> 12-DEC-65

是的,我确认风景很棒!

直到……

> 
> SQL> insert into mytemp values ('12121965');  
> 1 row created.
> 
> SQL> commit;  
> Commit complete.
> 
> SQL> select * from myview;
> 
> select * from myview
>                * 
> Error at line 1 ORA-01861: literal does not match format string

所以视图中的 SQL 是有效的,它的 SQL 到 select 也是有效的,并且在一个包含错误数据的数据行出现之前一切正常.

在 SQL 中的某处正在 link 执行,类似的事情正在发生。大概就在眼前吧。也许,如果 select 是插入的一部分,那么它会在插入端进行格式化。但这绝对是执行的 SQL 语句中某处的数据转换问题。

问题不在您的查询中,也不在权限中。这个错误肯定来自视图本身。从一种数据类型转换为另一种数据类型的任何地方都可能出现问题,因此请检查 TO_NUMBER、TO_DATE 甚至 TO_CHAR。在其中一个语句中,格式掩码(或您要转换的数据)无效。