我在小提琴中创建了场景https://dbfiddle.uk/VlKz_7fg 我必须删除重复记录并仅保留 1 条记录示例:对于发现的表 mfg_lz.icc_axbi_kanban_job 有 2 条记录,因此需要删除重复记录并仅保留 1 条记录。
此外,我不需要发现表具有像 mfg_lz_inc.icc_axbi_kanban_job 这样的 inc 表的记录。
所以理想情况下,我期望输出中只有 1 行,其中包含发现的表 mfg_lz.icc_axbi_kanban_job。 然而目前我得到了 4 行。有人可以帮助我应该在正则表达式中写什么来实现输出吗?
btrim()
和
rtrim()
,可以使用 ltrim()
。replace()
,您可以使用单个translate()
。concat()
,该参数是通过与 ||
连接构造的。您只需要其中之一:用逗号将单独的参数传递给 concat()
,或者完全删除 concat()
并仅与 ||
连接。[:word:]
和 [:alpha:]
字符类在 PostgreSQL 14 中可用。假设您使用的是 9.5(您使用的最高版本标签),您可以将它们替换为 \w
,稍微降级您的正则表达式(它现在允许标识符以数字开头,这是不允许的)。with cte as (
select field1,field2
,translate(
concat( ''''
,translate(
btrim(field2)
,'"'''
,'' )
,'''' )
,E'\n"'
,'' ) as edited_field2
from table1)
,cte2 as (
select *,unnest(
regexp_matches(
edited_field2
,'(?:FROM)(?:\s+ONLY)*\s+([\w\.]+|"[^"]+"(?:\."[^"]+")?)','gi' )
) AS spotted_table
from cte)
select field1,spotted_table,edited_field2
from cte2
where split_part(spotted_table,'.',1) !~* '_inc$';
字段1 | spotted_table | 编辑_字段2 |
---|---|---|
a | mfg_lz.icc_axbi_kanban_job | '选择 service_management.analyze_table(kanban_job,mfg_lz_inc);从 mfg_lz.icc_axbi_kanban_job 中删除 dw_upd_dtsz < To_Date(Cast(extract (year from (Current_Timestamp))-7 AS CHAR(4))||/02/01,yyyy/mm/dd);DELETE FROM mfg_lz.icc_axbi_kanban_job AWHERE EXISTS (SELECT 1 FROM mfg_lz_inc.icc_axbi_kanban_job B WHERE A.recid = B.recid and A.KANBAN=B.KANBAN);INSERT into mfg_lz.icc_axbi_kanban_job(ACTUALENDDATETIME,ACTUALENDDATETIMETZID,ACTUALPREPAREDDATETIME,ACTUALPREPAREDDATETIMETZID,ACTUALSTARTDATETIME,ACTUALSTARTDATETIMETZID,DEFAULTDIMENSION,DUEDATETIME,DUEDATETIMETZID,EXECUTABLE,EXPECTEDDATETIME,EXPECTEDDATETIMETZID,INVENTDIMDATAAREAID,INVENTDIMID,INVENTLOCATIONDATAAREAID,INVENTLOCATIONID,INVENTTRANSDATAAREAID,INVENTTRANSID,ISSUEINVENTDIMDATAAREAID,ISSUEINVENTDIMID,ISSUEINVENTTRANSDATAAREAID,ISSUEINVENTTRANSID,KANBAN,LEANPRODUCTIONFLOWACTIVITY,LEANSCHEDULEGROUPCOLOR,LEANSCHEDULEGROUPNAME,LEANSCHEDULEITEMRATIO,PLANACTIVITYNAME,QUANTITYORDERED,QUANTITYRECEIVED,QUANTITYSCRAPPED,SEQUENCE,SOURCEDOCUMENTHEADER,STATUS,TYPEE,WMSLOCATIONDATAAREAID,WMSLOCATIONID,WORKCELL,LOADPERCENT,PARTITIONN,RECID,RECVERSION,AXLWIPENDDATETIME,AXLWIPENDDATETIMETZID,AXLESTIMATEDSTARTDATETIME,AXLESTIMATEDSTARTDATETIMETZID,AXLRESOURCECONSTRAINEDJOBTIMEMINUTES,AXLKANBANACTIVITYPLANNEDSTARTDATE,AXLKANBANACTIVITYPLANNEDSTARTDATETIME,AXLKANBANACTIVITYPLANNEDSTARTDATETIMETZID,AXLKANBANACTIVITYPLANNEDENDDATETIME,AXLKANBANACTIVITYPLANNEDENDDATETIMETZID,AXLKANBANACTIVITYSCHEDULINGENDDATETIME,AXLKANBANACTIVITYSCHEDULINGENDDATETIMETZID,AXLFIS,MANUALCLEAR,MODIFIEDBY,TERMINAL,MODIFIEDDATETIME,MODIFIEDBY,CREATEDDATETIME,CREATEDBY,KFK_INS_DTSZ,SRC_SYS_NM,DW_ROW_HASH_VAL,DW_SRC_SITE_ID,DW_INS_DTSZ,DW_UPD_DTSZ,DW_LD_GRP_VAL,DW_ETL_SESS_NM) select INC_L.ACTUALENDDATETIME,INC_L.ACTUALENDDATETIMETZID,INC_L.ACTUALPREPAREDDATETIME,INC_L.ACTUALPREPAREDDATETIMETZID,INC_L.ACTUALSTARTDATETIME,INC_L.ACTUALSTARTDATETIMETZID,INC_L.DEFAULTDIMENSION,INC_L.DUEDATETIME,INC_L.DUEDATETIMETZID,INC_L.EXECUTABLE,INC_L.EXPECTEDDATETIME,INC_L.EXPECTEDDATETIMETZID,INC_L.INVENTDIMDATAAREAID,INC_L.INVENTDIMID,INC_L.INVENTLOCATIONDATAAREAID,INC_L.INVENTLOCATIONID,INC_L.INVENTTRANSDATAAREAID,INC_L.INVENTTRANSID,INC_L.ISSUEINVENTDIMDATAAREAID,INC_L.ISSUEINVENTDIMID,INC_L.ISSUEINVENTTRANSDATAAREAID,INC_L.ISSUEINVENTTRANSID,INC_L.KANBAN,INC_L.LEANPRODUCTIONFLOWACTIVITY,INC_L.LEANSCHEDULEGROUPCOLOR,INC_L.LEANSCHEDULEGROUPNAME,INC_L.LEANSCHEDULEITEMRATIO,INC_L.PLANACTIVITYNAME,INC_L.QUANTITYORDERED,INC_L.QUANTITYRECEIVED,INC_L.QUANTITYSCRAPPED,INC_L.SEQUENCE,INC_L.SOURCEDOCUMENTHEADER,INC_L.STATUS,INC_L.TYPEE,INC_L.WMSLOCATIONDATAAREAID,INC_L.WMSLOCATIONID,INC_L.WORKCELL,INC_L.LOADPERCENT,INC_L.PARTITIONN,INC_L.RECID,INC_L.RECVERSION,INC_L.AXLWIPENDDATETIME,INC_L.AXLWIPENDDATETIMETZID,INC_L.AXLESTIMATEDSTARTDATETIME,INC_L.AXLESTIMATEDSTARTDATETIMETZID,INC_L.AXLRESOURCECONSTRAINEDJOBTIMEMINUTES,INC_L.AXLKANBANACTIVITYPLANNEDSTARTDATE,INC_L.AXLKANBANACTIVITYPLANNEDSTARTDATETIME,INC_L.AXLKANBANACTIVITYPLANNEDSTARTDATETIMETZID,INC_L.AXLKANBANACTIVITYPLANNEDENDDATETIME,INC_L.AXLKANBANACTIVITYPLANNEDENDDATETIMETZID,INC_L.AXLKANBANACTIVITYSCHEDULINGENDDATETIME,INC_L.AXLKANBANACTIVITYSCHEDULINGENDDATETIMETZID,INC_L.AXLFIS,INC_L.MANUALCLEAR,INC_L.MODIFIEDBY,INC_L.TERMINAL,INC_L.MODIFIEDDATETIME,INC_L.MODIFIEDBY,INC_L.CREATEDDATETIME,INC_L.CREATEDBY,INC_L.KFK_INS_DTSZ,COALESCE(INC_L.src_sys_nm, ) AS src_sys_nm,md5(coalesce(cast(INC_L.recid as varchar(100))||cast(INC_L.KANBAN as varchar(100))||cast(INC_L.src_sys_nm as varchar(100)),1)) as dw_row_hash_val,1040 as dw_src_site_id,current_timestamp as dw_ins_dtsz,current_timestamp as dw_upd_dtsz,cast((to_char(current_timestamp, YYYYMMDDHH24MI)||.00) as numeric) as dw_ld_grp_val,ICM_INVSSF_DDLDSC_KFK_GPSS_ICC_AXBI_KANBAN_JOB as dw_etl_sess_nm from (select ACTUALENDDATETIME,ACTUALENDDATETIMETZID,ACTUALPREPAREDDATETIME,ACTUALPREPAREDDATETIMETZID,ACTUALSTARTDATETIME,ACTUALSTARTDATETIMETZID,DEFAULTDIMENSION,DUEDATETIME,DUEDATETIMETZID,EXECUTABLE,EXPECTEDDATETIME,EXPECTEDDATETIMETZID,INVENTDIMDATAAREAID,INVENTDIMID,INVENTLOCATIONDATAAREAID,INVENTLOCATIONID,INVENTTRANSDATAAREAID,INVENTTRANSID,ISSUEINVENTDIMDATAAREAID,ISSUEINVENTDIMID,ISSUEINVENTTRANSDATAAREAID,ISSUEINVENTTRANSID,KANBAN,LEANPRODUCTIONFLOWACTIVITY,LEANSCHEDULEGROUPCOLOR,LEANSCHEDULEGROUPNAME,LEANSCHEDULEITEMRATIO,PLANACTIVITYNAME,QUANTITYORDERED,QUANTITYRECEIVED,QUANTITYSCRAPPED,SEQUENCE,SOURCEDOCUMENTHEADER,STATUS,TYPEE,WMSLOCATIONDATAAREAID,WMSLOCATIONID,WORKCELL,LOADPERCENT,PARTITIONN,RECID,RECVERSION,AXLWIPENDDATETIME,AXLWIPENDDATETIMETZID,AXLESTIMATEDSTARTDATETIME,AXLESTIMATEDSTARTDATETIMETZID,AXLRESOURCECONSTRAINEDJOBTIMEMINUTES,AXLKANBANACTIVITYPLANNEDSTARTDATE,AXLKANBANACTIVITYPLANNEDSTARTDATETIME,AXLKANBANACTIVITYPLANNEDSTARTDATETIMETZID,AXLKANBANACTIVITYPLANNEDENDDATETIME,AXLKANBANACTIVITYPLANNEDENDDATETIMETZID,AXLKANBANACTIVITYSCHEDULINGENDDATETIME,AXLKANBANACTIVITYSCHEDULINGENDDATETIMETZID,AXLFIS,MANUALCLEAR,MODIFIEDBY,TERMINAL,MODIFIEDDATETIME,MODIFIEDBY,CREATEDDATETIME,CREATEDBY,KFK_INS_DTSZ,SRC_SYS_NM,row_number ()over (partition by recid,kanban,src_sys_nm order by kfk_ins_dtsz desc) as first_value from mfg_lz_inc.icc_axbi_kanban_job) INC_Lwhere first_value=1;select service_management.analyze_table(icc_axbi_kanban_job,mfg_lz);' |
a | mfg_lz.icc_axbi_kanban_job | '选择 service_management.analyze_table(kanban_job,mfg_lz_inc);从 mfg_lz.icc_axbi_kanban_job 中删除 dw_upd_dtsz < To_Date(Cast(extract (year from (Current_Timestamp))-7 AS CHAR(4))||/02/01,yyyy/mm/dd);DELETE FROM mfg_lz.icc_axbi_kanban_job AWHERE EXISTS (SELECT 1 FROM mfg_lz_inc.icc_axbi_kanban_job B WHERE A.recid = B.recid and A.KANBAN=B.KANBAN);INSERT into mfg_lz.icc_axbi_kanban_job(ACTUALENDDATETIME,ACTUALENDDATETIMETZID,ACTUALPREPAREDDATETIME,ACTUALPREPAREDDATETIMETZID,ACTUALSTARTDATETIME,ACTUALSTARTDATETIMETZID,DEFAULTDIMENSION,DUEDATETIME,DUEDATETIMETZID,EXECUTABLE,EXPECTEDDATETIME,EXPECTEDDATETIMETZID,INVENTDIMDATAAREAID,INVENTDIMID,INVENTLOCATIONDATAAREAID,INVENTLOCATIONID,INVENTTRANSDATAAREAID,INVENTTRANSID,ISSUEINVENTDIMDATAAREAID,ISSUEINVENTDIMID,ISSUEINVENTTRANSDATAAREAID,ISSUEINVENTTRANSID,KANBAN,LEANPRODUCTIONFLOWACTIVITY,LEANSCHEDULEGROUPCOLOR,LEANSCHEDULEGROUPNAME,LEANSCHEDULEITEMRATIO,PLANACTIVITYNAME,QUANTITYORDERED,QUANTITYRECEIVED,QUANTITYSCRAPPED,SEQUENCE,SOURCEDOCUMENTHEADER,STATUS,TYPEE,WMSLOCATIONDATAAREAID,WMSLOCATIONID,WORKCELL,LOADPERCENT,PARTITIONN,RECID,RECVERSION,AXLWIPENDDATETIME,AXLWIPENDDATETIMETZID,AXLESTIMATEDSTARTDATETIME,AXLESTIMATEDSTARTDATETIMETZID,AXLRESOURCECONSTRAINEDJOBTIMEMINUTES,AXLKANBANACTIVITYPLANNEDSTARTDATE,AXLKANBANACTIVITYPLANNEDSTARTDATETIME,AXLKANBANACTIVITYPLANNEDSTARTDATETIMETZID,AXLKANBANACTIVITYPLANNEDENDDATETIME,AXLKANBANACTIVITYPLANNEDENDDATETIMETZID,AXLKANBANACTIVITYSCHEDULINGENDDATETIME,AXLKANBANACTIVITYSCHEDULINGENDDATETIMETZID,AXLFIS,MANUALCLEAR,MODIFIEDBY,TERMINAL,MODIFIEDDATETIME,MODIFIEDBY,CREATEDDATETIME,CREATEDBY,KFK_INS_DTSZ,SRC_SYS_NM,DW_ROW_HASH_VAL,DW_SRC_SITE_ID,DW_INS_DTSZ,DW_UPD_DTSZ,DW_LD_GRP_VAL,DW_ETL_SESS_NM) select INC_L.ACTUALENDDATETIME,INC_L.ACTUALENDDATETIMETZID,INC_L.ACTUALPREPAREDDATETIME,INC_L.ACTUALPREPAREDDATETIMETZID,INC_L.ACTUALSTARTDATETIME,INC_L.ACTUALSTARTDATETIMETZID,INC_L.DEFAULTDIMENSION,INC_L.DUEDATETIME,INC_L.DUEDATETIMETZID,INC_L.EXECUTABLE,INC_L.EXPECTEDDATETIME,INC_L.EXPECTEDDATETIMETZID,INC_L.INVENTDIMDATAAREAID,INC_L.INVENTDIMID,INC_L.INVENTLOCATIONDATAAREAID,INC_L.INVENTLOCATIONID,INC_L.INVENTTRANSDATAAREAID,INC_L.INVENTTRANSID,INC_L.ISSUEINVENTDIMDATAAREAID,INC_L.ISSUEINVENTDIMID,INC_L.ISSUEINVENTTRANSDATAAREAID,INC_L.ISSUEINVENTTRANSID,INC_L.KANBAN,INC_L.LEANPRODUCTIONFLOWACTIVITY,INC_L.LEANSCHEDULEGROUPCOLOR,INC_L.LEANSCHEDULEGROUPNAME,INC_L.LEANSCHEDULEITEMRATIO,INC_L.PLANACTIVITYNAME,INC_L.QUANTITYORDERED,INC_L.QUANTITYRECEIVED,INC_L.QUANTITYSCRAPPED,INC_L.SEQUENCE,INC_L.SOURCEDOCUMENTHEADER,INC_L.STATUS,INC_L.TYPEE,INC_L.WMSLOCATIONDATAAREAID,INC_L.WMSLOCATIONID,INC_L.WORKCELL,INC_L.LOADPERCENT,INC_L.PARTITIONN,INC_L.RECID,INC_L.RECVERSION,INC_L.AXLWIPENDDATETIME,INC_L.AXLWIPENDDATETIMETZID,INC_L.AXLESTIMATEDSTARTDATETIME,INC_L.AXLESTIMATEDSTARTDATETIMETZID,INC_L.AXLRESOURCECONSTRAINEDJOBTIMEMINUTES,INC_L.AXLKANBANACTIVITYPLANNEDSTARTDATE,INC_L.AXLKANBANACTIVITYPLANNEDSTARTDATETIME,INC_L.AXLKANBANACTIVITYPLANNEDSTARTDATETIMETZID,INC_L.AXLKANBANACTIVITYPLANNEDENDDATETIME,INC_L.AXLKANBANACTIVITYPLANNEDENDDATETIMETZID,INC_L.AXLKANBANACTIVITYSCHEDULINGENDDATETIME,INC_L.AXLKANBANACTIVITYSCHEDULINGENDDATETIMETZID,INC_L.AXLFIS,INC_L.MANUALCLEAR,INC_L.MODIFIEDBY,INC_L.TERMINAL,INC_L.MODIFIEDDATETIME,INC_L.MODIFIEDBY,INC_L.CREATEDDATETIME,INC_L.CREATEDBY,INC_L.KFK_INS_DTSZ,COALESCE(INC_L.src_sys_nm, ) AS src_sys_nm,md5(coalesce(cast(INC_L.recid as varchar(100))||cast(INC_L.KANBAN as varchar(100))||cast(INC_L.src_sys_nm as varchar(100)),1)) as dw_row_hash_val,1040 as dw_src_site_id,current_timestamp as dw_ins_dtsz,current_timestamp as dw_upd_dtsz,cast((to_char(current_timestamp, YYYYMMDDHH24MI)||.00) as numeric) as dw_ld_grp_val,ICM_INVSSF_DDLDSC_KFK_GPSS_ICC_AXBI_KANBAN_JOB as dw_etl_sess_nm from (select ACTUALENDDATETIME,ACTUALENDDATETIMETZID,ACTUALPREPAREDDATETIME,ACTUALPREPAREDDATETIMETZID,ACTUALSTARTDATETIME,ACTUALSTARTDATETIMETZID,DEFAULTDIMENSION,DUEDATETIME,DUEDATETIMETZID,EXECUTABLE,EXPECTEDDATETIME,EXPECTEDDATETIMETZID,INVENTDIMDATAAREAID,INVENTDIMID,INVENTLOCATIONDATAAREAID,INVENTLOCATIONID,INVENTTRANSDATAAREAID,INVENTTRANSID,ISSUEINVENTDIMDATAAREAID,ISSUEINVENTDIMID,ISSUEINVENTTRANSDATAAREAID,ISSUEINVENTTRANSID,KANBAN,LEANPRODUCTIONFLOWACTIVITY,LEANSCHEDULEGROUPCOLOR,LEANSCHEDULEGROUPNAME,LEANSCHEDULEITEMRATIO,PLANACTIVITYNAME,QUANTITYORDERED,QUANTITYRECEIVED,QUANTITYSCRAPPED,SEQUENCE,SOURCEDOCUMENTHEADER,STATUS,TYPEE,WMSLOCATIONDATAAREAID,WMSLOCATIONID,WORKCELL,LOADPERCENT,PARTITIONN,RECID,RECVERSION,AXLWIPENDDATETIME,AXLWIPENDDATETIMETZID,AXLESTIMATEDSTARTDATETIME,AXLESTIMATEDSTARTDATETIMETZID,AXLRESOURCECONSTRAINEDJOBTIMEMINUTES,AXLKANBANACTIVITYPLANNEDSTARTDATE,AXLKANBANACTIVITYPLANNEDSTARTDATETIME,AXLKANBANACTIVITYPLANNEDSTARTDATETIMETZID,AXLKANBANACTIVITYPLANNEDENDDATETIME,AXLKANBANACTIVITYPLANNEDENDDATETIMETZID,AXLKANBANACTIVITYSCHEDULINGENDDATETIME,AXLKANBANACTIVITYSCHEDULINGENDDATETIMETZID,AXLFIS,MANUALCLEAR,MODIFIEDBY,TERMINAL,MODIFIEDDATETIME,MODIFIEDBY,CREATEDDATETIME,CREATEDBY,KFK_INS_DTSZ,SRC_SYS_NM,row_number ()over (partition by recid,kanban,src_sys_nm order by kfk_ins_dtsz desc) as first_value from mfg_lz_inc.icc_axbi_kanban_job) INC_Lwhere first_value=1;select service_management.analyze_table(icc_axbi_kanban_job,mfg_lz);' |