如何校验 MySQL&Oracle 时间字段合规性?
作者:余振兴
爱可生 DBA 团队成员,热衷技术分享、编写技术文档。
本文来源:原创投稿
- 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
背景信息
在数据迁移或者数据库低版本升级到高版本过程中,经常会遇到一些由于低版本数据库参数设置过于宽松,导致插入的时间数据不符合规范的情况而触发报错,每次报错再发现处理起来较为麻烦,是否有提前发现这类不规范数据的方法,以下基于 Oracle 和 MySQL 各提供一种可行性方案作为参考。
Oracle 时间数据校验方法
2.1 创建测试表并插⼊测试数据
CREATE TABLE T1(ID NUMBER,CREATE_DATE VARCHAR2(20));
INSERT INTO T1 SELECT 1, '2007-01-01' FROM DUAL;
INSERT INTO T1 SELECT 2, '2007-99-01' FROM DUAL; -- 异常数据
INSERT INTO T1 SELECT 3, '2007-12-31' FROM DUAL;
INSERT INTO T1 SELECT 4, '2007-12-99' FROM DUAL; -- 异常数据
INSERT INTO T1 SELECT 5, '2005-12-29 03:-1:119' FROM DUAL; -- 异常数据
INSERT INTO T1 SELECT 6, '2015-12-29 00:-1:49' FROM DUAL; -- 异常数据
2.2 创建对该表的错误日志记录
-
Oracle 可以调用
DBMS_ERRLOG.CREATE_ERROR_LOG
包对 SQL 的错误进行记录,用来记录下异常数据的情况,十分好用。 -
参数含义如下
T1
为表名T1_ERROR
为对该表操作的错误记录临时表DEMO
为该表的所属用户