db2-400 - 在 QSYS2 中使用函数 TIMESTAMP_FORMAT 无效。成员数据映射错误
问题描述
我是 iseries/DB2 的新手。
我们使用 V7R3。我们有 RPG 程序每天生成的表格作为物理文件。为了从 java 访问表数据,我们使用 jt400.jar jdbc 驱动程序。
大多数表查询工作正常,但一些使用“DENSE_RANK() OVER(ORDER BY”和“ROW_NUMBER() OVER(PARTITION BY”的复杂查询不时挂起并导致 CPU 100%。只在 AS400 端杀死工作正在解决问题。
在 AS400 日志中,我看到:
Job 969954/QUSER/QZDASOINIT started on 02/21/19 at 09:36:46 in subsystem
QUSRWRK in QSYS. Job entered system on 02/21/19 at 09:36:46.
User USERXX from client X.X.X.X connected to server.
Use of function TIMESTAMP_FORMAT in QSYS2 not valid.
Use of function TIMESTAMP_FORMAT in QSYS2 not valid.
Data mapping error on member TABLE_NAME.
Data mapping error on member TABLE_NAME.
Data mapping error on member TABLE_NAME.
Data mapping error on member TABLE_NAME.
Value in date, time, or timestamp string not valid.
它看起来与为什么我收到“[SQL0802] 数据映射错误的数据转换”异常中描述的问题相似 ? 并且可能问题与存储到 DATE 类型列的无效数据有关。
查看 DATE 列,我看到一些记录<null>
在 SQuirrel SQL 客户端中显示。有趣的是,这里有 2 个不同<null>
的 ' 由不同的查询返回。
如果我跑
select distinct VARCHAR_FORMAT(DATE_COLUMN, 'YYYY/MM/DD') from TABLE_NAME
对于这些行,我得到 0001/01/01 和 9999/12/31 <null>
。
如果我从 DATE_COLUMN 为空的 TABLE 中运行 Select *,我不会得到任何结果。所以我不确定那是什么类型的<null>
。
不确定这些记录是否会导致问题。
UPD: 当我跑步时
Select * from TABLE
我在 JDBC 客户端日志中看到错误:
Warning: [SQL0181] Value in date, time, or timestamp string not valid.
SQLState: 01534
ErrorCode: 181
Warning: [SQL0181] Value in date, time, or timestamp string not valid.
SQLState: 01534
ErrorCode: 181Warning: [SQL0181] Value in date, time, or timestamp string not valid.
SQLState: 01534
ErrorCode: 181
Warning: [SQL0181] Value in date, time, or timestamp string not valid.
SQLState: 01534
ErrorCode: 181
Query 1 of 1, Rows read: 100, Elapsed time (seconds) - Total: 0.252, SQL query: 0.005, Reading results: 0.247
基于https://www.consolut.com/en/s/sap-ides-access/d/s/p/40/doc/XH-SQL0181/它应该是表中某处的不正确日期
问题是有什么方法可以从 SQL 端查找和过滤具有“无效”数据(导致日志中出现上述异常)的记录?
解决方案
推荐阅读
- c++ - std::array: 为什么在 `at(-2)` 上没有警告或错误?
- github - 切换到新的 git 分支时 -b 和 -B 有区别吗?
- javascript - DiscortJS 机器人在提及特定用户的频道上发回消息
- python - 在熊猫数据框中过滤和操作日期时间
- google-chrome-extension - Chrome 扩展:通过 UI 而不是 javascript 在文本字段中输入值?
- c++ - windows中可执行的函数符号
- javascript - 将数据从 JavaScript 发送到 PHP
- c - C、为什么 .c 文件不需要包含头文件?
- tinymce - tinymce 创建快速响应/键盘快捷键
- amazon-cloudformation - 通过 AWS CloudFormation 中的参数排除/包含资源