色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

詳解如何校驗MySQL及Oracle時間字段合規性

瀏覽:2日期:2023-08-02 20:12:38
目錄背景信息Oracle 時間數據校驗方法創建測試表并插?測試數據創建對該表的錯誤日志記錄創建并插入數據到臨時表,驗證時間數據有效性校驗錯誤記錄MySQL 數據庫的方法創建測試表模擬低版本不規范數據創建臨時表進行數據規范性驗證數據比對一個取巧的小方法關于 SQLESQLE 獲取背景信息

在數據遷移或者數據庫低版本升級到高版本過程中,經常會遇到一些由于低版本數據庫參數設置過于寬松,導致插入的時間數據不符合規范的情況而觸發報錯,每次報錯再發現處理起來較為麻煩,是否有提前發現這類不規范數據的方法,以下基于 Oracle 和 MySQL 各提供一種可行性方案作為參考。

Oracle 時間數據校驗方法創建測試表并插?測試數據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; -- 異常數據創建對該表的錯誤日志記錄Oracle 可以調用 DBMS_ERRLOG.CREATE_ERROR_LOG 包對 SQL 的錯誤進行記錄,用來記錄下異常數據的情況,十分好用。

參數含義如下

T1 為表名T1_ERROR 為對該表操作的錯誤記錄臨時表DEMO 為該表的所屬用戶EXEC DBMS_ERRLOG.CREATE_ERROR_LOG('T1','T1_ERROR','DEMO');創建并插入數據到臨時表,驗證時間數據有效性-- 創建臨時表做數據校驗CREATE TABLE T1_TMP(ID NUMBER,CREATE_DATE DATE);-- 插入數據到臨時表驗證時間數據有效性(增加LOG ERRORS將錯誤信息輸出到錯誤日志表)INSERT INTO T1_TMP SELECT ID, TO_DATE(CREATE_DATE, 'YYYY-MM-DD HH24:MI:SS')FROM T1 LOG ERRORS INTO T1_ERROR REJECT LIMIT UNLIMITED;校驗錯誤記錄SELECT * FROM DEMO.T1_ERROR;

其中 ID 列為該表的主鍵,可用來快速定位異常數據行。

MySQL 數據庫的方法創建測試表模擬低版本不規范數據-- 創建測試表SQL> CREATE TABLE T_ORDER( ID BIGINT AUTO_INCREMENT PRIMARY KEY, ORDER_NAME VARCHAR(64), ORDER_TIME DATETIME);-- 設置不嚴謹的SQL_MODE允許插入不規范的時間數據SQL> SET SQL_MODE='STRICT_TRANS_TABLES,ALLOW_INVALID_DATES';SQL> INSERT INTO T_ORDER(ORDER_NAME,ORDER_TIME) VALUES ('MySQL','2022-01-01'),('Oracle','2022-02-30'),('Redis','9999-00-04'),('MongoDB','0000-03-00');-- 數據示例SQL> SELECT * FROM T_ORDER;+----+------------+---------------------+| ID | ORDER_NAME | ORDER_TIME |+----+------------+---------------------+| 1 | MySQL | 2022-01-01 00:00:00 || 2 | Oracle | 2022-02-30 00:00:00 || 3 | Redis | 9999-00-04 00:00:00 || 4 | MongoDB | 0000-03-00 00:00:00 |+----+------------+---------------------+創建臨時表進行數據規范性驗證-- 創建臨時表,只包含主鍵ID和需要校驗的時間字段SQL> CREATE TABLE T_ORDER_CHECK( ID BIGINT AUTO_INCREMENT PRIMARY KEY, ORDER_TIME DATETIME);-- 設置SQL_MODE為5.7或8.0高版本默認值SQL> SET SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';-- 使用INSERT IGNORE語法插入數據到臨時CHECK表,忽略插入過程中的錯誤SQL> INSERT IGNORE INTO T_ORDER_CHECK(ID,ORDER_TIME) SELECT ID,ORDER_TIME FROM T_ORDER;數據比對

將臨時表與正式表做關聯查詢,比對出不一致的數據即可。

SQL> SELECT T.ID, T.ORDER_TIME AS ORDER_TIME, TC.ORDER_TIME AS ORDER_TIME_TMPFROM T_ORDER T INNER JOIN T_ORDER_CHECK TC ON T.ID=TC.IDWHERE T.ORDER_TIME<>TC.ORDER_TIME;+----+---------------------+---------------------+| ID | ORDER_TIME | ORDER_TIME_TMP |+----+---------------------+---------------------+| 2 | 2022-02-30 00:00:00 | 0000-00-00 00:00:00 || 3 | 9999-00-04 00:00:00 | 0000-00-00 00:00:00 || 4 | 0000-03-00 00:00:00 | 0000-00-00 00:00:00 |+----+---------------------+---------------------+一個取巧的小方法

對時間字段用正則表達式匹配,對有嚴謹性要求的情況還是得用以上方式,正則匹配燒腦。

-- Oracle 數據庫SELECT * FROM T1 WHERE NOT REGEXP_LIKE(CREATE_DATE,'^((?:19|20)\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$'); ID CREATE_DATE---------- -------------------- 2 2007-99-01 4 2007-12-99 5 2005-12-29 03:-1:119 6 2015-12-29 00:-1:49-- MySQL 數據庫-- 略,匹配規則還在調試中關于 SQLE

愛可生開源社區的 SQLE 是一款面向數據庫使用者和管理者,支持多場景審核,支持標準化上線流程,原生支持 MySQL 審核且數據庫類型可擴展的 SQL 審核工具。

SQLE 獲取類型地址版本庫https://github.com/actiontech/sqle文檔https://actiontech.github.io/sqle-docs/發布信息https://github.com/actiontech/sqle/releases數據審核插件開發文檔https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_audit...

以上就是詳解如何校驗MySQL及Oracle時間字段合規性的詳細內容,更多關于MySQL Oracle時間字段合規性的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
主站蜘蛛池模板: 久久性生大片免费观看性 | 亚洲天堂伊人 | 亚洲日产综合欧美一区二区 | 久久国产一片免费观看 | 日本免费小视频 | 欧美a区| 国产网红自拍 | 亚洲精品www久久久久久久软件 | 一级视频免费观看 | 欧美亚洲在线视频 | 国产欧美17694免费观看视频 | 欧美片能看的一级毛片 | 自拍1页 | 美女mm131爽爽爽免费视色 | 99re66热这里只有精品免费观看 | 国产日韩久久久久69影院 | 性视频网站在线 | 亚洲日本一区二区三区高清在线 | 小明日韩在线看看永久区域 | 久久久久国产精品美女毛片 | 九九热视频精品 | 久久国产精品1区2区3区网页 | 在线播放高清国语自产拍免费 | 亚洲国产精品大秀在线播放 | 国产精品系列在线一区 | 国产三级三级三级 | 中国三级毛片 | 日本噜噜影院 | 中文字幕亚洲国产 | 成人综合婷婷国产精品久久免费 | 5级做人爱c视版免费视频 | 国产精品久久久久久爽爽爽 | 国产精品麻豆一区二区三区v视界 | 91精品视品在线播放 | 真人一级毛片免费完整视 | 国产伦精一区二区三区视频 | 欧美视频一区二区在线观看 | 黄色网址www | 欧美一级视频在线观看欧美 | 欧美区在线 | 国产中文字幕在线播放 |