Files
wace_rps/docs/migration/development/data-sync/03_long_bom_sample.sql
T
hjjeong b5bc7f3630 개발관리>data-sync — 긴 BOM 샘플 1건 운영DB → RPS 복사
E-BOM 조회 트리 화면 검증용 긴 BOM 1건을 운영DB 에서 RPS 로 복사 (1회성).

선정 기준 : bom_part_qty 행 수 + 트리 깊이 큼.
대상 BOM : part_bom_report.objid = '1038014721'
            part_no = '21008-0109'  / part_name = 'BS030-120H4A11-EN'
구조     : 126 행 / 4 레벨 (L1=1 / L2=37 / L3=62 / L4=26)

파일:
- 03_long_bom_sample.sql : TEMP staging + ON CONFLICT DO NOTHING INSERT
  · pbr_stage / bpq_stage 두 TEMP 테이블에 \copy 로 적재 후 INSERT FROM SELECT
  · 재실행 안전 (ON CONFLICT 시 skip)
- pbr_long.csv  : part_bom_report 1행 (운영DB export, CSV HEADER)
- bpq_long.csv  : bom_part_qty 126행 (운영DB export, CSV HEADER, seq ORDER BY)
- README.md     : 02_sequences.sql / 03_long_bom_sample.sql 섹션 추가

용도:
- 동적 LEVEL 컬럼 (L1..L4) "*" 표시 검증
- 토글 -/+ 버튼 동작 검증 (자식 보유 행 식별 + 자손 hide 체인)
- search_level 1~5 필터 검증
- 정전개 엑셀 다운로드 검증

운영DB OBJID 그대로 사용 — RPS part_mng 가 운영DB와 동일 OBJID 보유 (이전 part_mng_sync
로 보장) 라서 PART 정보 매핑 정상.

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

77 lines
2.2 KiB
PL/PgSQL

BEGIN;
-- ─── PART_BOM_REPORT staging + INSERT ──
CREATE TEMP TABLE pbr_stage (
objid varchar,
customer_objid varchar,
contract_objid varchar,
unit_code varchar,
status varchar,
writer varchar,
regdate timestamp,
multi_yn varchar,
multi_master_yn varchar,
multi_break_yn varchar,
multi_master_objid varchar,
product_cd varchar,
part_no varchar,
part_name varchar,
revision varchar,
note varchar,
editer varchar,
edit_date timestamp,
deploy_date varchar
);
\copy pbr_stage FROM '/tmp/pbr_long.csv' WITH CSV HEADER
INSERT INTO part_bom_report (
objid, customer_objid, contract_objid, unit_code, status, writer, regdate,
multi_yn, multi_master_yn, multi_break_yn, multi_master_objid,
product_cd, part_no, part_name, revision, note, editer, edit_date, deploy_date
)
SELECT
objid, customer_objid, contract_objid, unit_code, status, writer, regdate,
multi_yn, multi_master_yn, multi_break_yn, multi_master_objid,
product_cd, part_no, part_name, revision, note, editer, edit_date, deploy_date
FROM pbr_stage
ON CONFLICT (objid) DO NOTHING;
-- ─── BOM_PART_QTY staging + INSERT ──
CREATE TEMP TABLE bpq_stage (
bom_report_objid varchar,
objid varchar,
parent_objid varchar,
child_objid varchar,
parent_part_no varchar,
part_no varchar,
qty numeric,
item_qty numeric,
qty_temp numeric,
regdate timestamp,
writer varchar,
seq bigint,
status varchar,
last_part_objid varchar,
deploy_user_id varchar,
deploy_date varchar
);
\copy bpq_stage FROM '/tmp/bpq_long.csv' WITH CSV HEADER
INSERT INTO bom_part_qty (
bom_report_objid, objid, parent_objid, child_objid, parent_part_no, part_no,
qty, item_qty, qty_temp, regdate, writer, seq, status, last_part_objid,
deploy_user_id, deploy_date
)
SELECT
bom_report_objid, objid, parent_objid, child_objid, parent_part_no, part_no,
qty, item_qty, qty_temp, regdate, writer, seq, status, last_part_objid,
deploy_user_id, deploy_date
FROM bpq_stage
ON CONFLICT (objid) DO NOTHING;
COMMIT;
SELECT 'PART_BOM_REPORT:' AS label, COUNT(*) FROM part_bom_report WHERE objid = '1038014721'
UNION ALL
SELECT 'BOM_PART_QTY:', COUNT(*) FROM bom_part_qty WHERE bom_report_objid = '1038014721';