Files
wace_rps/docs/migration/development/data-sync/01_part_mng_sync.sql
T
hjjeong d74263eaed 개발관리>part_mng 운영DB → RPS 누락 컬럼 데이터 동기화 (1회성)
PART 상세 다이얼로그 검증 중 발견: 품번/품명만 표시되고 재료/규격/계정구분/조달구분/
재고단위/관리단위/환산수량/LOT구분/사용여부/검사여부/SET품여부/의뢰여부 등 거의 모든
컬럼이 NULL. 운영DB 같은 part_no 는 정상 채움 — 마이그레이션 누락.

01_part_mng_sync.sql:
- 운영DB(11133/waceplm) → /tmp/part_mng_sync.csv export
- TEMP staging 테이블 → RPS DB(11134/vexplor_rps) part_mng UPDATE FROM JOIN
- 동기화 컬럼 20개: material / heat_treatment_(hardness/method) / surface_treatment /
  maker / part_type / spec / acctfg / odrfg / unit_dc / unitmang_dc / unitchng_nb /
  lot_fg / use_yn / qc_fg / setitem_fg / req_fg / unit_length / unit_qty / is_last
- is_last 도 같이 COALESCE(p.is_last, '1') 로 채움 — 마이그레이션 시 NULL 이라
  partMng 매퍼의 IS_LAST='1' 조건이 0건 반환되던 부수 문제 동시 해결

결과 (2026-05-12 실행): 8,176건 UPDATE.
  · material 301 / acctfg 8,172 / unit_dc 8,176 / spec 7,466 / part_type 703 / is_last 8,176

미동기화: 운영DB 에만 있는 67건 (운영 8,243 - RPS 8,176). part_no 자체가 RPS 에
미존재 → 신규 INSERT 별 작업.

대상 데이터:
- 본 디렉토리는 *.sql .gitignore 우회 git add -f 로 강제 트래킹 (영업/프로젝트관리
  ddl-extracted 패턴 동일)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 18:32:57 +09:00

68 lines
2.3 KiB
PL/PgSQL

BEGIN;
CREATE TEMP TABLE part_mng_sync_stage (
part_no varchar,
material varchar,
heat_treatment_hardness varchar,
heat_treatment_method varchar,
surface_treatment varchar,
maker varchar,
part_type varchar,
spec varchar,
acctfg varchar,
odrfg varchar,
unit_dc varchar,
unitmang_dc varchar,
unitchng_nb varchar,
lot_fg varchar,
use_yn varchar,
qc_fg varchar,
setitem_fg varchar,
req_fg varchar,
unit_length varchar,
unit_qty varchar
);
\copy part_mng_sync_stage FROM '/tmp/part_mng_sync.csv' WITH CSV HEADER
UPDATE part_mng P SET
material = NULLIF(S.material, ''),
heat_treatment_hardness = NULLIF(S.heat_treatment_hardness, ''),
heat_treatment_method = NULLIF(S.heat_treatment_method, ''),
surface_treatment = NULLIF(S.surface_treatment, ''),
maker = NULLIF(S.maker, ''),
part_type = NULLIF(S.part_type, ''),
spec = NULLIF(S.spec, ''),
acctfg = NULLIF(S.acctfg, ''),
odrfg = NULLIF(S.odrfg, ''),
unit_dc = NULLIF(S.unit_dc, ''),
unitmang_dc = NULLIF(S.unitmang_dc, ''),
unitchng_nb = CASE WHEN S.unitchng_nb = '' THEN P.unitchng_nb ELSE S.unitchng_nb::numeric END,
lot_fg = NULLIF(S.lot_fg, ''),
use_yn = NULLIF(S.use_yn, ''),
qc_fg = NULLIF(S.qc_fg, ''),
setitem_fg = NULLIF(S.setitem_fg, ''),
req_fg = NULLIF(S.req_fg, ''),
unit_length = NULLIF(S.unit_length, ''),
unit_qty = NULLIF(S.unit_qty, ''),
is_last = COALESCE(P.is_last, '1'),
edit_date = NOW()
FROM part_mng_sync_stage S
WHERE P.part_no = S.part_no;
COMMIT;
SELECT
COUNT(*) AS total,
COUNT(NULLIF(material,'')) AS material_filled,
COUNT(NULLIF(acctfg,'')) AS acctfg_filled,
COUNT(NULLIF(unit_dc,'')) AS unit_dc_filled,
COUNT(NULLIF(part_type,'')) AS part_type_filled,
COUNT(NULLIF(spec,'')) AS spec_filled,
COUNT(NULLIF(maker,'')) AS maker_filled,
COUNT(NULLIF(is_last,'')) AS is_last_filled
FROM part_mng;
SELECT part_no, material, spec, part_type, acctfg, odrfg, unit_dc, unitmang_dc, unitchng_nb, lot_fg, use_yn, qc_fg, setitem_fg, req_fg
FROM part_mng WHERE part_no = '000AN003000';