我的数据调整工作总结

接触到这份工作,纯属偶然,公司原来的DBA要走了,临时没了数据分析人员,就找了我来负责一段时间。早以前的工作也是经常和数据打交道,所以对于公司软件的后台数据的来拢去脉了如指掌,这点工作我想也不在话下。做了一段时间后才发现比想像中的难度要大得多,这才感觉自己才疏学浅,业务与技术是同等的重要。算是苦中作乐,努力把工作做好,并将学习到的知识累积起来,我想也不失为一件乐事。现在很感慨世间高手如云,你不过小菜一碟,加油吧!下面把最近的工作内容整理一下,留作以后温习的笔记。

一:存储过程错误代码分析类问题

问题描述:执行call tzxerp.p_erp_rptimport_zl(?,?);报错如下:

RTN_CODE参数值为-788

RTN_DESC参数值为SQL EXCEPTION ERP_FDZDK-788


原因分析:

本机安装有DB2客户端的情况下,可通过运行cmd,输入db2 ? sql-788(-788为错误代码)的意思。

从上面报错的返回内容看,-788为导出或导入表中数据可能有重复数据。可按以下方式依次排查。

 

处理方式:

首先,根据报错中返回的表名ERP_FDZDK排查ERP_FDZDK_TEMP与ERP_FDRYYHZK中是否有重复数据:

--RTN_DESC 参数值中显示ERP_FDZDK-788

第一步,查询重复数据

select fdjgxh,bbrq,ZDBH from TZXERP.ERP_FDZDK_TEMP group by fdjgxh,bbrq,ZDBH having count(*)>1

第二步,确认重复数据

SELECT * from TZXERP.ERP_FDZDK_TEMP where fdjgxh=88 and bbrq='2014-04-14' AND ZDBH IN()
第三步,删除重复数据

delete fromTZXERP.ERP_FDZDK_TEMP where fdjgxh=88 and bbrq='2014-04-14'and id IN(217884)

  

--ERP_FDRYYHZK-788

第一步,查询重复数据

select fdjgxh,bbrq from TZXERP.ERP_FDRYYHZK group by fdjgxh,bbrq having count(*)>1

第二步,确认重复数据

SELECT from tzxerp.erp_fdryyhzk where fdjgxh=88 and bbrq='2014-04-14'
第三步,删除重复数据

delete fromtzxerp.erp_fdryyhzk where fdjgxh=88 and bbrq='2014-04-14'and id=227884

 

=====================================================================================

以上两个表有重复数据并做处理后,再次执行tzxerp.p_erp_rptimport_zl验证结果,如果仍有此错,继续排查

=====================================================================================

 

--RTN_DESC 参数值中显示ERP_TCXSK-788

第一步,查询重复数据

select fdjgxh,bbbc,bbrq,cmbh from TZXERP.ERP_TCXSK_TEMP group by fdjgxh,bbbc,bbrq,cmbh having count(*)>1

第二步,确认重复数据

selectfdjgxh,bbbc,bbrq,cmbh from TZXERP.ERP_TCXSK_TEMP where fdjgxh=88 AND bbbc='晚市'ANDbbrq='2014-04-14'AND cmbhIN('82056','82057','82124')

第三步,删除重复数据

DELETE FROMTZXERP.ERP_TCXSK_TEMP where fdjgxh=88 AND bbbc='晚市'AND bbrq='2014-04-14'AND ID IN(57330,57331,57332)


=================================================================

重复数据处理完后,再次执行tzxerp.p_erp_rptimport_zl验证结果,检查执行结果是否为:

RTN_CODE参数值为1

RTN_DESC参数值为OK!

=================================================================


 二、门店数据问题定位分析及处理类

1、操作主要相关表

门店:B_ZDLSK、B_ZDMXK、B_FKLSTJK、B_ZXFKLSK、B_HYKXFLSK、B_TCLSTJK

2、根据问题描述确定问题发生的具体位置,然后使用事件探查器或其他方式定位跟踪出能显示错误数据的相关SQL语句

3、具体分析SQL语句,通过对语句的拆分查询,定位出错误的具体发生位置

4、针对错误进行原因的分析并纠正错误数据

5、在界面上查看错误位置的问题是否已修复


三、总部数据调整类

1、操作主要相关表

总部:ERP_FDZDK、ERP_FDZDMXK、ERP_FDRYYHZK

2、总部的数据问题处理与门店不同,需要直接在数据库中定位与修复,所以我们需要先查出问题数据,然后运用命令对可以批量处理的数据进行调整,示例如下:

MERGE INTO TZXERP.ERP_FDZDK A     --加粗的字体表示可在此表上按条件直接执行更新操作
USING
(SELECT * FROM (
SELECT A.FDJGXH,A.BBRQ,A.ZDBH,
       MAX(A.XFLJ) XFLJ,
  MAX(A.ZFWF) ZFWF,
  MAX(A.ZKJE) ZKJE,
  MAX(A.ZRJE) ZRJE,
  MAX(A.MLJE) MLJE,
  MAX(A.YHJE) YHJE,
  MAX(A.SJJE) SJJE,
  MAX(A.XJJE) XJJE,
  MAX(A.ZPJE) ZPJE,
  MAX(A.XYJE) XYJE,
  MAX(A.MDJE) MDJE,
  MAX(A.GZJE) GZJE,
  MAX(A.LJJE) LJJE,
  MAX(A.DSLJ) DSLJ,
  MAX(NVL(A.GST,0))  GST,
           SUM(CASE WHEN NVL(B.WDBZ,'') = '退菜' THEN 0
           WHEN NVL(B.WDBZ,'') = '奉送' THEN 0
           WHEN NVL(B.WDBZ,'') = '免单' AND A.MDJE > 0 AND NVL(FZWDBZ,'') = ''
           THEN B.CPJE
   WHEN NVL(B.WDBZ,'') = '免单' AND A.MDJE > 0 AND NVL(FZWDBZ,'') = '明细'
   THEN B.CPJE
   WHEN NVL(B.WDBZ,'') = '免单' AND A.MDJE > 0 AND NVL(FZWDBZ,'') = '套菜'
   THEN 0
   WHEN NVL(B.WDBZ,'') = '免单' AND A.MDJE > 0 AND NVL(FZWDBZ,'') = '奉送'
   THEN B.CPJE
   WHEN NVL(B.WDBZ,'') = '免单' AND A.MDJE = 0
           THEN 0
   WHEN NVL(B.WDBZ,'') = '套菜'
   THEN 0
   ELSE B.SJJE
      END) MXJE
FROM TZXERP.ERP_FDZDK A
JOIN TZXERP.ERP_FDZDMXK B
ON A.FDJGXH = B.FDJGXH AND A.BBRQ = B.BBRQ AND A.ZDBH = B.ZDBH
WHERE A.FDJGXH IN (SELECT JGXH FROM TZXERP.DIM_ORGAN)
  AND A.BBRQ >= '2014-03-02'
  AND A.BBRQ <= '2014-03-10'
GROUP BY A.FDJGXH,A.BBRQ,A.ZDBH) 
WHERE XJJE + ZPJE + XYJE + GZJE + MDJE + LJJE - DSLJ - (CASE WHEN MDJE > 0 THEN 0 ELSE GST END) - ZFWF <> MXJE and dslj<>0 )B
ON A.FDJGXH=B.FDJGXH AND A.BBRQ=B.BBRQ AND A.ZDBH=B.ZDBH
WHEN MATCHED THEN
  UPDATE SET A.MLJE=B.XFLJ-B.SJJE-B.YHJE,A.DSLJ=0

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

有关MERGE INTO 的使用方法链接 http://www.myexception.cn/database/922521.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值