From 0390e23ca8cd73e0ef7c9c687ae3d44d89211795 Mon Sep 17 00:00:00 2001 From: "x.azuma.m@nds-tyo.co.jp" Date: Tue, 6 Jun 2023 19:32:46 +0900 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8B=95=E3=83=86=E3=82=B9=E3=83=88?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E3=80=80=E7=95=B0=E5=B8=B8=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vjsk_file_check/test_vjsk_file_check.py | 4 +- .../batch/vjsk/vjsk_load/test_vjsk_load.py | 278 ++++++++++++++++-- .../UnzipError/bio_slip_data_202304270000.gz | Bin 0 -> 2649 bytes .../UnzipError/fcl_mst_202304270000.gz | Bin 0 -> 2003 bytes .../UnzipError/hld_mst_202304270000.gz | Bin 0 -> 541 bytes .../UnzipError/lot_num_mst_202304270000.gz | Bin 0 -> 415 bytes .../UnzipError/mdb_conv_mst_202304270000.gz | Bin 0 -> 533 bytes .../mkr_org_horizon_202304270000.gz | Bin 0 -> 808 bytes .../UnzipError/org_cnv_mst_202304270000.gz | Bin 0 -> 508 bytes .../UnzipError/phm_prd_mst_202304270000.gz | Bin 0 -> 1175 bytes .../UnzipError/phm_price_mst_202304270000.gz | Bin 0 -> 529 bytes .../UnzipError/slip_data_202304270000.gz | Bin 0 -> 2890 bytes .../stock_slip_data_202304270000.gz | Bin 0 -> 928 bytes .../UnzipError/tran_kbn_mst_202304270000.gz | Bin 0 -> 498 bytes .../UnzipError/vop_hco_merge_202304270000.gz | Bin 0 -> 398 bytes .../whs_customer_mst_202304270000.gz | Bin 0 -> 1305 bytes .../UnzipError/whs_mst_202304270000.gz | Bin 0 -> 589 bytes .../testdata/phm_price_mst_dataerror.tsv | 3 + .../testdata/phm_price_mst_formaterror.tsv | 2 + 19 files changed, 255 insertions(+), 32 deletions(-) create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/bio_slip_data_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/fcl_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/hld_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/lot_num_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/mdb_conv_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/mkr_org_horizon_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/org_cnv_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/phm_prd_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/phm_price_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/slip_data_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/stock_slip_data_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/tran_kbn_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/vop_hco_merge_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/whs_customer_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/whs_mst_202304270000.gz create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_price_mst_dataerror.tsv create mode 100644 ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_price_mst_formaterror.tsv diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_file_check/test_vjsk_file_check.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_file_check/test_vjsk_file_check.py index 99b31d68..1c523d0e 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_file_check/test_vjsk_file_check.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_file_check/test_vjsk_file_check.py @@ -10,7 +10,7 @@ def test_check_received_files_ok1(init_check_received_files_ok1): 観点 正常系 : 卸在庫データ取込対象日 期待値 - 例外が発生する + 例外が発生しない """ batch_context = BatchContext.get_instance() batch_context.is_vjsk_stock_import_day = True @@ -29,7 +29,7 @@ def test_check_received_files_ok2(init_check_received_files_ok2): 観点 正常系 : 卸在庫データ取込対象日以外 期待値 - 例外が発生する + 例外が発生しない """ batch_context = BatchContext.get_instance() batch_context.is_vjsk_stock_import_day = False diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py index 5f373fe0..a648724f 100644 --- a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/test_vjsk_load.py @@ -10,6 +10,7 @@ from src.batch.vjsk.vjsk_data_load_manager import VjskDataLoadManager from src.batch.vjsk.vjsk_importer import (_check_received_files, _import_file_to_db) from src.db.database import Database +from src.error.exceptions import BatchOperationException # from tests.testing_vjsk_utility import create_vjsk_assertion_dictionary from tests.testing_vjsk_utility import (assert_table_results, create_vjsk_assertion_list) @@ -20,6 +21,7 @@ class TestImportFileToDb: batch_context: BatchContext test_file_path_import_all: str test_file_path_load_individual: str + test_file_path_unzip_error: str @pytest.fixture(autouse=True, scope='function') def pre_test(self, database: Database): @@ -27,6 +29,7 @@ class TestImportFileToDb: # setup self.test_file_path_import_all = path.join(path.dirname(__file__), "testdata", "TestImportFileToDb") self.test_file_path_load_individual = path.join(path.dirname(__file__), "testdata") + self.test_file_path_unzip_error = path.join(path.dirname(__file__), "testdata", "UnzipError") self.batch_context = BatchContext.get_instance() @@ -80,41 +83,72 @@ class TestImportFileToDb: key = f"{receive_folder}/{test_file}" s3_client.upload_file(file_name, bucket_name, key) - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_STOCK_SLIP_DATA)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_SLIP_DATA)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_ORG_CNV_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_VOP_HCO_MERGE)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_WHS_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_HLD_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_FCL_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_MKR_ORG_HORIZON)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_TRAN_KBN_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_PHM_PRD_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_PHM_PRICE_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_WHS_CUSTOMER_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_MDB_CONV_MST)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_BIO_SLIP_DATA)}") - # self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_LOT_NUM_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_STOCK_SLIP_DATA)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_SLIP_DATA)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_ORG_CNV_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_VOP_HCO_MERGE)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_WHS_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_HLD_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_FCL_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_MKR_ORG_HORIZON)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_TRAN_KBN_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_PHM_PRD_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_PHM_PRICE_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_WHS_CUSTOMER_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_MDB_CONV_MST)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_BIO_SLIP_DATA)}") + self.db.execute(f"truncate table {mapper.get_src_table(mapper.CONDKEY_LOT_NUM_MST)}") # assertion received_s3_files = _check_received_files() _import_file_to_db(received_s3_files) - # # 検証 (卸在庫データファイル) - # table_name_org = mapper.get_org_table(mapper.CONDKEY_STOCK_SLIP_DATA) - # table_name_src = mapper.get_src_table(mapper.CONDKEY_STOCK_SLIP_DATA) - # result = self.db.execute(f"select * from {table_name_org}") - # assert result.rowcount == 10 - # result = self.db.execute(f"select * from {table_name_src}") - # assert result.rowcount == 10 - - # # 検証 (卸販売データ) - # table_name_org = mapper.get_org_table(mapper.CONDKEY_SLIP_DATA) - # table_name_src = mapper.get_src_table(mapper.CONDKEY_SLIP_DATA) - # result = self.db.execute(f"select * from {table_name_org}") - # assert result.rowcount == 10 - # result = self.db.execute(f"select * from {table_name_src}") - # assert result.rowcount == 10 + # 検証 + condkey = mapper.CONDKEY_STOCK_SLIP_DATA + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_SLIP_DATA + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_ORG_CNV_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_VOP_HCO_MERGE + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_WHS_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_HLD_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_FCL_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_MKR_ORG_HORIZON + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_TRAN_KBN_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_PHM_PRD_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_PHM_PRICE_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_WHS_CUSTOMER_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_MDB_CONV_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_BIO_SLIP_DATA + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) + condkey = mapper.CONDKEY_LOT_NUM_MST + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_org_table(condkey)}")) + assert 10 == len(self.db.execute_select(f"select * from {mapper.get_src_table(condkey)}")) # teardown for test_file in test_files: @@ -1074,3 +1108,187 @@ class TestImportFileToDb: assert result_src_count[0]['count(*)'] == 6 # teardown + + def test_unzip_to_error(self, s3_client, bucket_name, receive_folder, mapper): + """ + 観点 + 異常系 : gzファイルが解凍できない + 期待値 + 例外が発生する + """ + # setup - 卸在庫データ取込対象日 + self.batch_context.is_vjsk_stock_import_day = True + + # setup - S3受領バケットの内容をすべて削除する + vjsk_recv_bucket = VjskReceiveBucket() + s3_files = vjsk_recv_bucket.get_s3_file_list() + for file_obj in s3_files: + s3_client.delete_object(Bucket=bucket_name, Key=file_obj.get("filename")) + + # setup - テスト用受領ファイルをS3受領バケットにupload + # ※.gzだが、7zipで圧縮してあるので、解凍に失敗するのが期待値 + test_files = [ + "stock_slip_data_202304270000.gz", + "slip_data_202304270000.gz", + "org_cnv_mst_202304270000.gz", + "vop_hco_merge_202304270000.gz", + "whs_mst_202304270000.gz", + "hld_mst_202304270000.gz", + "fcl_mst_202304270000.gz", + "mkr_org_horizon_202304270000.gz", + "tran_kbn_mst_202304270000.gz", + "phm_prd_mst_202304270000.gz", + "phm_price_mst_202304270000.gz", + "whs_customer_mst_202304270000.gz", + "mdb_conv_mst_202304270000.gz", + "bio_slip_data_202304270000.gz", + "lot_num_mst_202304270000.gz" + ] + for test_file in test_files: + file_name = path.join(self.test_file_path_unzip_error, test_file) + key = f"{receive_folder}/{test_file}" + s3_client.upload_file(file_name, bucket_name, key) + + # assertion + received_s3_files = _check_received_files() + with pytest.raises(Exception) as e: + _import_file_to_db(received_s3_files) + + # 検証 + assert str(e.value) == "file could not be opened successfully" + + # teardown + for test_file in test_files: + key = f"{receive_folder}/{test_file}" + s3_client.delete_object(Bucket=bucket_name, Key=key) + + def test_load_data_error(self, mapper): + """ + 観点 + 異常系 : 日付型矛盾のデータ ※製品価格マスタファイルで確認 + 期待値 + 例外が発生する + """ + + # setup + self.batch_context.is_vjsk_stock_import_day = True + + # 処理実行 + target_dict = { + "condkey": mapper.CONDKEY_PHM_PRICE_MST, + "src_file_path": path.join(self.test_file_path_load_individual, "phm_price_mst_dataerror.tsv") + } + + with pytest.raises(BatchOperationException) as e: + VjskDataLoadManager.load(target_dict) + + # 検証 + assert str(e.value).startswith("SQL Error:") > 0 + + # teardown + + def test_load_format_error(self, mapper): + """ + 観点 + 異常系 : tsvファイルが途中で欠落している + 期待値 + 例外が発生する + """ + + # setup + self.batch_context.is_vjsk_stock_import_day = True + + # 処理実行 + target_dict = { + "condkey": mapper.CONDKEY_PHM_PRICE_MST, + "src_file_path": path.join(self.test_file_path_load_individual, "phm_price_mst_formaterror.tsv") + } + + with pytest.raises(BatchOperationException) as e: + VjskDataLoadManager.load(target_dict) + + # 検証 + assert str(e.value).startswith("SQL Error:") > 0 + + # teardown + + def test_s3backup_ok(self, s3_client, bucket_name, receive_folder, mapper): + """ + 観点 + 正常系 : S3受領ファイルのバックアップフォルダ移動が完了する + 期待値 + 例外が発生する + """ + # setup - 卸在庫データ取込対象日 + self.batch_context.is_vjsk_stock_import_day = True + + # setup - S3受領バケットの内容をすべて削除する + vjsk_recv_bucket = VjskReceiveBucket() + s3_files = vjsk_recv_bucket.get_s3_file_list() + for file_obj in s3_files: + s3_client.delete_object(Bucket=bucket_name, Key=file_obj.get("filename")) + + # setup - テスト用受領ファイルをS3受領バケットにupload + # ※.gzだが、7zipで圧縮してあるので、解凍に失敗するのが期待値 + test_files = [ + "stock_slip_data_202304270000.gz", + "slip_data_202304270000.gz", + "org_cnv_mst_202304270000.gz", + "vop_hco_merge_202304270000.gz", + "whs_mst_202304270000.gz", + "hld_mst_202304270000.gz", + "fcl_mst_202304270000.gz", + "mkr_org_horizon_202304270000.gz", + "tran_kbn_mst_202304270000.gz", + "phm_prd_mst_202304270000.gz", + "phm_price_mst_202304270000.gz", + "whs_customer_mst_202304270000.gz", + "mdb_conv_mst_202304270000.gz", + "bio_slip_data_202304270000.gz", + "lot_num_mst_202304270000.gz" + ] + for test_file in test_files: + file_name = path.join(self.test_file_path_import_all, test_file) + key = f"{receive_folder}/{test_file}" + s3_client.upload_file(file_name, bucket_name, key) + + # assertion + received_s3_files = _check_received_files() + vjsk_recv_bucket.backup_dat_file(received_s3_files, "test") + + # 検証 + + # teardown + for test_file in test_files: + key = f"{receive_folder}/{test_file}" + s3_client.delete_object(Bucket=bucket_name, Key=key) + + def test_s3backup_to_error(self, s3_client, bucket_name, receive_folder, mapper): + """ + 観点 + 異常系 : S3受領ファイルのバックアップフォルダ移動ができない + 期待値 + 例外が発生する + """ + # setup - 卸在庫データ取込対象日 + self.batch_context.is_vjsk_stock_import_day = True + + # setup - S3受領バケットの内容をすべて削除する + vjsk_recv_bucket = VjskReceiveBucket() + s3_files = vjsk_recv_bucket.get_s3_file_list() + for file_obj in s3_files: + s3_client.delete_object(Bucket=bucket_name, Key=file_obj.get("filename")) + + # setup + + # assertion + with pytest.raises(Exception) as e: + # 有りもしないファイルをバックアップフォルダにコピーさせてコケさせる + received_s3_files = [] + received_s3_files.append({"filename": "dummy.dummy"}) + vjsk_recv_bucket.backup_dat_file(received_s3_files, "test") + + # 検証 + assert str(e.value) == "An error occurred (404) when calling the HeadObject operation: Not Found" + + # teardown diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/bio_slip_data_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/bio_slip_data_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..c609baff8d5bb8aa1df1dc627ae1f42d55a619b7 GIT binary patch literal 2649 zcmV-f3a0fpdc3bE8~_CBuppAJ2><{90001r000000002GB5Tj!L;nevo}N7H!}`6!|44bB1Zd zA;|%jBml99_4nA8eWK{mQ|@aUvr5q)p#iS!JzLh+jS-F0>q!Bu{9h#Aoj1PvK-DQg zi?9bnmd5E++p12iIy(d3{*^a$C5|$R?1=2i^oYv0|l|J6A+9t?vymZlos?NLqJ)*&N?E0 zhg-e=Aw*J-Rp~pNmm&&7Tk^5diW_I8v=d{v#wP*|A64&Pjbodn9>ckgn57f%;I9w` z`lkg7pF{UzJwO^w9q8(b*4ha^rvw8!hrZORZZ1S#U>-KnSbVR4lO}q|=@7wfHd1nf z#zpDD6wYe*d4_F62!#HN%?=-DYj5&ekvY-XsRK3UPyrj<-xZZuVU*2&=XHn~ge42V zaUIg&;+WL~&@Vw?&sU7M06xLxk37`OGDPq83lmzz75>NX zPUt|te?LLOLBoz&T`9NFVIfl_F2-I~@wX51_d~arq-=eF(R&~|=B@G|&gPXm z;3RwHhlA@T5D;r>;jff_^YAiq))e$|aLFTL{IRj8h+R;F6vOlX&a^~p^!SRrfE@rR zLAz>Q)!p}5e4rn?%9jKJ9Curv_mb*RJr9x<+P$Q{xW|J7+5dGPV7ecS@7}s6axR*< zGpw|GNGxPv?AYZ`mxWIu%pJV(@uUW;E9ufu|6-3WEiR4;tNh*#-Ds@D3Tdu#hewR& zcUlyKZ;YjS8b`AEck*u+v=t;7YTypsqX+VlrRPBlLaRMr#$X*nago$1J5V&*>hrz; zQ}v~v9ous#a5B3 zihpgfhH5Yy;qIqas;n*E?OcArL)<;PmQfD)k!s5~qN-q~6vz~2!wboq#&nahQI+=grbyO?+s1UTDRCVKFk7?< zLOL%Id&}H4J{jP8Ubl}Ukflf&&=t)#VI_nHp?Bnx9Th@taa!iA_=Yl@%)57 z*Ic7(SoB78L<7yZz)8z1ON3`VbLCy$IpTi_NQjk=f>1FXo$23!*234_ylNh{|FWA7 zeONyc7YndnfOqIJA-CQQ^Ch|_sNvlOFIwd44&Z(H6q~@PK!p-)on|;W+5bYM3xk1; zijOge=hlkkZQV7f?5+g`IuGwC(t58FT@q@5ZM0ARhd~Ed6fh2W#E%1#_Ei}l+?Fcg9tLI%kWkoR=Zhdd+QrU&WZ9YldCSYB>H_sC^eEXXZr&Tio=pl$ zMTYH3t<1_B@yDHMH4(Y|BaubYW~fv(K|Amveb9)XwIm0o>8}h03fF`s?39Ec`e+&A zg^TTn=@$_vb`owMPUEGwS)O_-Krp2napxc#IX*>d zD;1U?7e7YmbwHm!&aBQ%WTk?M9jtz;7PxiEY!~t5E}QDeVxAQdId@#+On^)LK(_E1 zqd#t}KuqJVk47dGtJe`KeuXSIN;~zNP6c(2ND{?#lVV`e)hQ0RhT~ztY*b@UH}{j% zHz20;z+RtTm+zH5Y8GG_3!wozuIqUV!NHE^mWvb<_gOsRhf3qoEPjlK6Iq!3 zX}b6by{T@(J`NW7B$G3g0lHC6aR4q?nFrzo-@Bmh_sJ)-MHu86r%REf=mf_{9N5Qt zy1AlqdCr-@*S1G+Ok@GuLHMdFry&fc9l#TL(_@Cq9wo!OZxfYi*wd+~mEpEVcK{do zNtG>OU0NzDGnoFv6AO}|Akq)ZMF>dq8@P1)HZqMC%kXa6OWGs+1hjGMvQxFcO3Rg3 z>~)dlzT9pwl0gW4oG|zZ5;u@HXn3K>b%9biv&jGE@hT9f1!9Oy{@FSxbxS^*zWJL7B~!zHJ&&nnv<@3Hg^ge^(IjgH`Rg8f`MP`EU#S#e}E z!9K;^z*au7lisX?RkljrQ_YkTly&EpD9Xy(q)6s#I|cX|IXj9PPk4Z+Z<+K++10RSKX H00000Q4Zck literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/fcl_mst_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/fcl_mst_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..7f532e3b495ea3917ad7209461f48275b23036a0 GIT binary patch literal 2003 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 T@c6V|UCT{IQ8q>f1+a+#BE!|7 literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/lot_num_mst_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/lot_num_mst_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..821eccd466b905bf80dd76d301e3fc124198d007 GIT binary patch literal 415 zcmXr7+Ou9=hJnQ+czXF?1_)?^(rr5&Vjpn+XZRY+U?zR)U7?hcI@hH{|VX9u-=XKe36y9`r@mgK= z^qVvOJ3Z`!uVkcLk~?Om_vG~7b(b$TyLM_{2!4_LafRxW1(vtwU$L0A%W0O00?W}Y z=F(>$Rh)cg^IY|L`otoOpquRXPtDo7Q!2Z~VrMA>10xF?10!d{Uj}w=Mg~SjMMegm zE(Qh;E=I`~u51PdRz^uKXixzuL2HH_hJ1z+hIocNhEj%HAf3xl4CWg#7%&(y7z0TY nAZ-q$Ay5w}o5)ZE)GWy$!o|qY(3z=I*K(6ll#P)=0c~w=ef?Nu>KIY#xD?H7A{`BuP2R?L6JT$q}XRFAw=kq--eR=(CO74vLulBns6=WC@#!{a5UT=lgwS4b$YL-h5i2C#V@!ENR z%X&et!W7A;0?+h6y=>SdP@z#{Ca%TQnYqT`ne6*LGs~pv`B}I9lMdLr<@&*Q8Y<2& zZ)Kmm=zG*zDX=J6c*6DG{>8~l((9k;#J-iArSM)<);?cqGixU2SFyvnE90il(vxrI zFZH~&=&sYT105`4=gpT`A98q6Ji~wclG{n%e;td0!%D)P7*n66t_|M4fBHhkM|0*s zVPIfnVPjzAY%FGA=VoMJR8(YS;OSvt;NW6Ba6bDm0|P6gBo{P-fRvyuLoP!KLlQ$g zLo!1?LmopJkd@0&%uoWPjTj7o*ceEf0BLg|4S{+<*+hmSpmq^1MurA`cCEUWn~b7t Jj0_53lL2C#&i?=a literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/mkr_org_horizon_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/mkr_org_horizon_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..d6327182e541ade13aa5222abf35750d251a2f3e GIT binary patch literal 808 zcmXr7+Ou9=hJoetg8Nc+OblSq1)&(U!$oBt$o^+4i)ApIb!t_ya;SWc`v;pf4GED3 zPFw}NN6xeO3pTzCzVOE&Qo+j3&f1x+MAd`aA;Lg7(`TWk$gbB3f&GpeK^m1U1&+-72P{oM(N=j3tpC`{Q7X~gr)tW zzDqwh2?&+>Fo}K;S~tPG_HOT~(>vcC7T!_adivez<83SYm3Do&9kFG-$yUP&eAY^q zyXMb4^mk`O>HcZ!R~2l#@B1*!ESZ0*F#loCL)Tx6w^JPyJ z_UI->*qrlup=n$C;mpR2MHOL8PM@0Bi6kdT)imFi+{mu2_*hp!@lv|(Z%NKV`II#A zIm?be-W(S;VNtSTnv%fr@VEN;dBEflM&i^-*IBGY0>6Kp`hlZ8yrLvlwv<8CmY+kA7+j-06< zy6&Ax-WjNI-HT_}_ z{shjLutetR0|o02U(Tgr8B%SzKN%QV*ccc&o9YGAMv;004SbOXvUq literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/org_cnv_mst_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/org_cnv_mst_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..1efc8e0f44b3a75dbc3d87909461e23a1dd9f481 GIT binary patch literal 508 zcmXr7+Ou9=hJnR#wD3-x|PN!h(6vh|7_smk;c6sUS z?2CKUmx+ZoX{}3H7S6(*{FpoH+@H2L9jx);+KcTDuK4j@!HA_-B~bkNPsPaHp^1O5 zyh+zOab;27N|m;bMBf|cEFE>ih6lA2O-^?%KJ6=c`gx80Jhqi0T2tQtbCu_8U#s#| z_wzsTx%Qqf(#P44o&=W|U{3tkkS-apYY)Of!K z|G{VRiVV_o)S1s8-uWr(!@51jM}ACaSLL5sTYpIR_{*)cj?b9TziZvsE0MyB#8S;Q zwyLbU?P(WRHd~VGi)uq-?>~pMJZ-~kAEwqyC$;?Dc5cyb6Fbw-%lcY=B&!RSv`yF~ z({N_`#P!mxK7yLJR6gaJ*qqLru=kpg?w`Ot8>$uW3sxz=I`d-6F5kUe{ol5Hj#gZn zrCgl*e`B24=I5R(9_(4WHRkO@{gb9PTRN2(7+KgD7&#lG7}&WP85k8685wwb7#KLX z7}uLugfK9$GD>nm;{iwsS~KJ`6fvYT#4{u_1>0E|lh7urc#9#o##z4{pNSgy` j2-E}0CIa;^Fi0|pa4|A8R6D8GwcKPBWn*Me0GkW|=Sjg? literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/phm_prd_mst_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/phm_prd_mst_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..c45076da977e36b40f0eaf997380aa19e0be62e7 GIT binary patch literal 1175 zcmV;I1Zev=dc3bE8~_BBw@YXB0{{R30001j000000001AoC>$#6aNG4T>v;53HoF+ z&@S2Jrr0QE?D8ym#8}7ee4+>R!;{%NTS~jgD*WP%kP&<&E-J~ zg)?oPJtV|Hp2x^k5>oGD0d%7G5lrFWyF`h|8!gbCElES@8U-MQ*WkOhVMj1v%)sRV zk+gTXUJ8D3Ry;!0i=UyRC&MCp0uV%+qEjb{fPI0h9z1lK#Idx{3S@&+T+bcfIWB;jJYd>>G`|4uN0tle&~folAVu|^swnMKXSge6`*{w zPvz%!B|My(%wa9hZ5fd`8P8JLYm#)fx1j&YmcuYK8O>1!%1mxxO)~MCMq_GDojUV| z+tIJb^5TUsw@rIbA#WuFi7eSe=>gl1@c!|(FTZHUY}jmSk&gJ=pnEVm1S18e)Dow8 zVhEvW|w#99o4T5uC9+LSA8&Qo-7nU%G?7S^J7PQ z9N*2c&DDzi=U4#oLv`djy@ph4ZDRZ@kPxpiB*!^vmQ3 z=X?rNZ*-fZXZP}b00D9WPsUwAq!R9FECbj)E(3TLZfK~_S>AUEN`dSzmk6Y;R63ZA z7ZYE}K1nBx%-{=QWmgq`BP*nP4k8XFYjY+Ft8%DO5$ljIf;>j!1XshYH6p)rmi@<6 zPKKfhNw`AOAOgNMw>6%^ph4`mf`#BPJ^}yav#+)lx8Rk?bl*t>Ef-+1X?oV*FV0lU zaE$l2Uq5E7zWzilLn-7*4O0;f4}=fkBamNqBJO=m+H*rEuB_Y{<4D@NV{A7uwmVq- z7HjQa5iT)n3j^A zhy(Ky75coj}zC}v^%mb>JWpi0l-GvO8yxSA7cNgm`3v^t-Kz)<(ope`gD#* z=Xzbcvc%_rsV+Tqm za+gJSG_X=t8o)P{>6KUE<{K*O^WQ(?1LEI5>x;IQ>SG!SHFc nqTiQ$(3w<5Ls2 z9Bm2JEhoy5lu-Zx0R#pB0SSZk00#>J00AK(0Raq@000OI0okdpP5=M}0T~Ja00000 z0000001-O?Z~$lkZ2(^YZ~$@uWB^|PZ2)rsbO2ufG5|0DG5|9GFaR_FG5|LKFaR(B pFaR(BE&y}@VE}Rf000>P6bbks85zK!3qmpEaG%h8!2O>wK9<2kit|^B@danGb1&^9ou16R zG-dOH-WRSPzF(<~Q_oU-QkR_KE#%G7pRa%Lh4Hz~lbsJsn>053c=3PdJWHwVhj%Qs z@_9LVqq@Ke&4>N_LCL_i_s|REtgeEx%xP=aD`swStTX z4tq7e%q=RaPr83!()g)KzrC!>)qF`C7Iryk4vJUc7JXm@5}_oh!fISir}t zy3Kl)_?_VEl?JBYp5Ds4oU{FAVz9mCh2vW6)j4ZU*z{Wn6wX$D^Wt?l)2vk!S1dfv z!GHd-W>HJwRJM|>x8@&vAbZZ!{MR4?qCBW1d_1qJ|FHLOp~s%bVKNPKKX56e9~0d6*JS;?zy-E7Q-3^( zxgD5pIa}u4m&RoaIvmy~ZoJo?Y#QYdd2n&6p+Ka+;{>nGg^P6r7#LaD7#KMl(;3*g z85tNA6&V?LdKefuxEKZazXD^0l~Ixl8Yw_Z(4L`yA%h{8As$Ef1&|;E07>V` AX#fBK literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/slip_data_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/slip_data_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..9c2dc3ad8b220f26cf496de8e62e50a8c31e1031 GIT binary patch literal 2890 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 literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/stock_slip_data_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/stock_slip_data_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..3d741b23b8d06131ede9740849253dd80d84c9a3 GIT binary patch literal 928 zcmV;R17G|%dc3bE8~_9u_yv?q3L&ZC zEPpun`r`{FYty&VXAAX8Wl4QlPT~VK>FX_(9eL%0^Ps4)<4wI!%pbk`U-(aQy=$&^ z7(B_}8$5lDpAZxK(b}Ht%{Wi~Tnf78a}~Pef1$)d5OLTz$7IsngT=hX!p9@Q$Bl2( ziflrX0zrW-rXCa20O|a_mp`}~gFT#d0MW1zSZBwPE+L2i!KPe*6YfxTZ7w3|31vFq`rE3ch`ju1GoC1T>29ehZ(Mv*1;!uvGJNqZlOP zap1I=$nO4Zxun%M%o=LYlHo%{<9>k`%WLds9o(8)?ee8wu&=enC}X3`NnJU7i*exf zZrvS*1I6?jMRZYLX-~~84647yEm-OFJUX;phqoigF&ne$%v=IPRPd!f7FYVpI+w~Z z(zmR1A0V1)3RFY4C6z zX4Au(7!uHV8zW6!VjeuSWjmxfk#H&3`N-q9FK$OZ42fZY9*WTKaRpv{0k2h@E009IB009Yt_5cS90RRCZAprplm;e9>3IXkjO9ub|1pyff z0000000000000p~0CNCz0B-2RCEI`hR=_8SqAU;jL6 z`^6qDv**&Mdim$7XYQDO2|F$iP<(wB1!j=2r+Iz7W27%PL`g>BhWTs{r zON(nxNU)wgzacPrddNvjEe7?9MXYt7%Tl$=o}{*=KfQ8BUf4Rt<4Z_v*`76BmBnY< z-gzaRVd7jU!My+FtAmdZ;su5c8))Tk3&yHM)C_d1E{1xp?si{=XVQ=YJyhu?2Q za@UKhkUy_}ur%!2Uv%*7ru17;nzyC*38w!!FMOYE#Y^{t`@WnxzPDxnv~>5H+WW_& zr}0HvIX|^{WO;dSh|yw^*+y#?PPpFnzLxRVo2a&J6z1Z^2g7>XDY8S)t78L}CYz;rG{F;Fy~!HB^Ch>d}y36M4i(h#TzluZQcVqg&A WVq|FOQI)7`xydNX#>k)mHW>hN!MgAO literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/vop_hco_merge_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/vop_hco_merge_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..a698e6313afebab9adfe57be053e1b8ed0a6bfc0 GIT binary patch literal 398 zcmXr7+Ou9=hJnStwbkYc0|azI>0b@Mwm;zf&u}M}!CLxMTFE2HS%2)euIm`^&-1yS))~!mbX=>gF79|?`E?bj+XSw(Jb9(z@4VY|C zupUZC+IL~!`N>+6pRVl;>{uk)W!t-*>rJgY%frgtMa&frdzwS7GH)Ldd%fXhPjr&> z!^n#L+r@Upe!6$W@mOKIOXJpx;$0ulPT5fWadrO;=j{n=kDl?#Q2({D>`%wS2#u}k z>F2V}ZZYwk6R>s5jB8z29}BIjIh**cY0vo;!Atk*?GwMFc!`X(gaAG18E41XV7CPVMqk3V_=YEVqg&A WVq|DAIxJe(a+6V%jgdhCYy$ue&yYL- literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/whs_customer_mst_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/whs_customer_mst_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..88998e266c3d4bd6bff2f4cb86e957988f50d879 GIT binary patch literal 1305 zcmV+!1?KuUdc3bE8~_Aw7im#%1ONa40001r000000001nHI0to7ykrjT>v|p3e0h| zE7|hh_V3-Wz~ik>d2)l$BqOQ2auwXBN$KZk&pb1F-Mhpti{42yhP&J*#uB5A6*le2 zeGf%!{Uyo><>`Yg_(Ib@XG7x5%2$HV)Ue)>rfe||TTFI#c?jI_Q#^}Cwny}`$G-H$ z@i^##6oTm>dh0e=BIpfWf$(*FqvYHXRUD8fcG6NGuU<`gRU{6Z<;ShTHd^H>@$-wp zVHKFCFc5PXB_VTPu08>z_Go8TNYPal}OT=)=0|FlXBOP2V_i6 zX@L`SgSd{|*Eh=~1{a?bAE&;SLws}OC^9=090;M4_H9=vL)U?jiX-~Y^>|Ew=)%dR z3u90k=D<`(L1V#JKP8%dKehLp7*vE}#sm8>2C}K(uf9 z;w^+X4Glz#=LoP^CMLQR8- z!Yw`InaenSWae>Ik=08-W(v?h9U@kNSoxbKmbKV0R{$R8p|kU8;@$sgCn(jog|4z{ zk9reeM=5{21_B4T`w9zXl9j)OiZe*vTmdnfiv=M(xRI$5&7c%;2qXy~*KXi|HtVG& zUQbqQ{umzZ9Ry*p^PA|FJo_hBA1SbBUKNlfSUa-Y2*ZS`=`26_=FbbmE@}r9p&qpt zx4TA%U9QZSzo(w$)*q;L7eyGe7Ewo|_e!30F{p38SH{esHl2!g+~ zW+qZQKDks8E_-GB9u-iy_j4;nvSW8&2FB|2V3kIoQtn)?p`K3XH{T6$isg{N;TmSS zB3pAl>8zBpD^zZfHprBd2oKHopS{RCuLrv1DLBmgloJiAP{62L17d|u@ZfaPK@u)A z4y;3ll*OI~ztuNK(dg$(dXhM76trHE?YtV8tq31Ywi()xdPbwP@+M=SN>fz)o<^sC zRAdEw8-BdJul7{L&;0p8W{8P7!4xVoluUr6|EZ(Pka*v*vxP)YIlfMbE2&u5Ba5bn zGN<7$TfWww=1VaHjWcTGGC%tKe^DP*n6G_A+yDUt1^@vGgl_-`3jqKDAt3<)4441_ z2nqqWr8oxw00jXV3IG5A000000000HMF4jIXaI8nUjSnObpUe!bO3JvZ2)BeasXcd zZ2)rsbO2ufG5|0DG5|9GFaR_FG5|LKFaR(BFaR(BE&y}@VE}Rf000yU0RRB#We|RZ P*#Q*>0RSKX00000NnT7o literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/whs_mst_202304270000.gz b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/UnzipError/whs_mst_202304270000.gz new file mode 100644 index 0000000000000000000000000000000000000000..a97fdb31ea2712b7afc6e043b35a28ea0bbced1d GIT binary patch literal 589 zcmXr7+Ou9=hJhvN(o>zyj0|8<1)&&rhh7(a!26$Zbu5GREUq&}0vD&fIQ9A0Yi`Na zfB!8m*ivNZb>6)_dtqhHmzzRCRxYNB{;P$;Ro2cv!m#^6(lgr)d0tP<#Fx)^*&pe1 zY%81QMn8w6>-I0Wy!+VWIpQbpGJBZa5ZkrDUgY2ZC4S24J_3@g5nr$Ng!<1p@Y^JG z<8B`N6Z~RHPWHtyoVUf9SKQQYyQ8>xXR3_F1(giO$LpjPX|||~&3N$oOV?>xalf3U zDFG|Ldi|5_-|h5_{hah4Kle2`ebSwW@3efK{bafKRA4*4zAYwUhkmL)i_NGz=#+ zS^TfNSDp1Kww8hY)e+|vzJ?l+)|%TY9$9syeM(tU-0oz&Eo-KK_SM+kxB0*AJGaC4 znEsUK65C7FZ>;#G$nyK)117E{7Z$GhuM5~ZgHO+2zu@z>Em~J!t`aksTj514$DgZ4RU%P!A}Z$WR2-B*`Gc1xzb_ S%zSk%HyK6Q7#S46CISG2=j=uR literal 0 HcmV?d00001 diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_price_mst_dataerror.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_price_mst_dataerror.tsv new file mode 100644 index 00000000..3df124c1 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_price_mst_dataerror.tsv @@ -0,0 +1,3 @@ +"phm_prd_cd" "phm_price_kind" "sub_no" "price" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt" +"123456701" "01" "1" "12345.6" "yyyy0401" "20190930" "10" "0" "18-03-07 09:48:00" "19-09-19 11:23:47" +"123456701" "02" "1" "12587.8" "20191001" "99991231" "10" "0" "19-09-19 11:24:05" "19-09-19 11:24:05" diff --git a/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_price_mst_formaterror.tsv b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_price_mst_formaterror.tsv new file mode 100644 index 00000000..20ebb14d --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/vjsk/vjsk_load/testdata/phm_price_mst_formaterror.tsv @@ -0,0 +1,2 @@ +"phm_prd_cd" "phm_price_kind" "sub_no" "price" "start_dt" "end_dt" "dsp_odr" "rec_sts_kbn" "ins_dt" "upd_dt" +"123456701" "01" "1" "12345.6" "202304 \ No newline at end of file