Mearge recent development
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
-- ===================================================================
|
||||
-- MARS-1046 Test: Direct CREATE_EXTERNAL_TABLE Test
|
||||
-- ===================================================================
|
||||
-- Purpose: Test FILE_MANAGER.CREATE_EXTERNAL_TABLE procedure
|
||||
-- and verify NORMALIZE_DATE_FORMAT functionality
|
||||
-- Author: Grzegorz Michalski
|
||||
-- Date: 2026-01-13
|
||||
-- ===================================================================
|
||||
|
||||
SET SERVEROUTPUT ON;
|
||||
SET LINESIZE 200;
|
||||
SET PAGESIZE 100;
|
||||
|
||||
PROMPT ===================================================================
|
||||
PROMPT MARS-1046: Testing CREATE_EXTERNAL_TABLE with ISO 8601 Format
|
||||
PROMPT ===================================================================
|
||||
|
||||
-- Step 1: Upload test CSV file to INBOX (if not already there)
|
||||
PROMPT
|
||||
PROMPT Step 1: Verify CSV file in INBOX bucket
|
||||
PROMPT File: INBOX/TEST/ISO8601/ISO8601_TEST_DATA/iso8601_test_data.csv
|
||||
PROMPT (Upload manually using OCI CLI if needed)
|
||||
PROMPT
|
||||
|
||||
-- Step 2: Create INBOX external table using FILE_MANAGER
|
||||
PROMPT Step 2: Creating INBOX external table using ODS.FILE_MANAGER_ODS
|
||||
BEGIN
|
||||
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
|
||||
pTableName => 'ISO8601_TEST_DATA_INBOX',
|
||||
pTemplateTableName => 'CT_ET_TEMPLATES.ISO8601_TEST_DATA',
|
||||
pPrefix => 'INBOX/TEST/ISO8601/ISO8601_TEST_DATA',
|
||||
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE('SUCCESS: External table ISO8601_TEST_DATA_INBOX created');
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
IF SQLCODE = -955 THEN -- ORA-00955: name is already used by an existing object
|
||||
DBMS_OUTPUT.PUT_LINE('INFO: External table ISO8601_TEST_DATA_INBOX already exists');
|
||||
ELSE
|
||||
DBMS_OUTPUT.PUT_LINE('ERROR: ' || SQLERRM);
|
||||
RAISE;
|
||||
END IF;
|
||||
END;
|
||||
/
|
||||
|
||||
-- Step 3: Verify external table exists
|
||||
PROMPT
|
||||
PROMPT Step 3: Verifying external table creation
|
||||
SELECT
|
||||
table_name,
|
||||
type_name,
|
||||
default_directory_name
|
||||
FROM all_external_tables
|
||||
WHERE owner = 'ODS'
|
||||
AND table_name = 'ISO8601_TEST_DATA_INBOX';
|
||||
|
||||
-- Step 4: Check ACCESS PARAMETERS - verify date format has quoted "T"
|
||||
PROMPT
|
||||
PROMPT Step 4: Checking ACCESS PARAMETERS (DATE FORMAT verification)
|
||||
PROMPT Expected: MASK should contain YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM
|
||||
PROMPT -------------------------------------------------------------------
|
||||
SET LONG 50000
|
||||
SET PAGESIZE 0
|
||||
SELECT access_parameters
|
||||
FROM all_external_tables
|
||||
WHERE owner = 'ODS'
|
||||
AND table_name = 'ISO8601_TEST_DATA_INBOX';
|
||||
SET PAGESIZE 100
|
||||
|
||||
-- Step 5: Read data from external table
|
||||
PROMPT
|
||||
PROMPT ===================================================================
|
||||
PROMPT Step 5: Reading data from INBOX external table
|
||||
PROMPT ===================================================================
|
||||
COLUMN EVENT_NAME FORMAT A30
|
||||
COLUMN PARSED_TIMESTAMP FORMAT A40
|
||||
COLUMN DESCRIPTION FORMAT A50
|
||||
|
||||
SELECT
|
||||
ID,
|
||||
EVENT_NAME,
|
||||
TO_CHAR(EVENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3 TZH:TZM') AS PARSED_TIMESTAMP,
|
||||
DESCRIPTION
|
||||
FROM ODS.ISO8601_TEST_DATA_INBOX
|
||||
ORDER BY ID;
|
||||
|
||||
-- Step 6: Verify all records parsed correctly
|
||||
PROMPT
|
||||
PROMPT Step 6: Verification Summary
|
||||
SELECT
|
||||
COUNT(*) AS TOTAL_RECORDS,
|
||||
COUNT(EVENT_TIMESTAMP) AS PARSED_TIMESTAMPS,
|
||||
CASE
|
||||
WHEN COUNT(*) = COUNT(EVENT_TIMESTAMP) THEN 'PASS'
|
||||
ELSE 'FAIL'
|
||||
END AS TEST_RESULT
|
||||
FROM ODS.ISO8601_TEST_DATA_INBOX;
|
||||
|
||||
PROMPT
|
||||
PROMPT ===================================================================
|
||||
PROMPT Test Complete!
|
||||
PROMPT ===================================================================
|
||||
PROMPT
|
||||
PROMPT Expected Results:
|
||||
PROMPT 1. External table ISO8601_TEST_DATA_INBOX created in ODS schema
|
||||
PROMPT 2. ACCESS PARAMETERS contain: YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM
|
||||
PROMPT 3. All 5 records successfully parsed with timestamps
|
||||
PROMPT 4. Milliseconds (.FF3) and timezone (TZH:TZM) preserved
|
||||
PROMPT
|
||||
PROMPT CRITICAL VERIFICATION:
|
||||
PROMPT - Check ACCESS PARAMETERS output for quoted "T" separator
|
||||
PROMPT - Verify all EVENT_TIMESTAMP values are not NULL
|
||||
PROMPT - Confirm fractional seconds and timezone are present
|
||||
PROMPT ===================================================================
|
||||
Reference in New Issue
Block a user