Conversión de juegos de caracteres de Oracle (4): 4.Configuración del entorno de prueba

Continuando con el artículo anterior, analizamos la configuración del entorno de prueba de conversión del juego de caracteres de Oracle. Puede verificar la configuración del entorno del servidor Oracle (tres instancias, creación de DB Link), creación de tablas de prueba y scripts de creación de datos de prueba. Este entorno de prueba se utiliza en el proceso de conversión de juegos de caracteres más adelante.

Esta es una continuación del artículo anterior.

Conversión de juego de caracteres de Oracle (3): 3. Configuración del entorno del cliente (2)

4. Configurar el entorno de prueba de conversión de juegos de caracteres de Oracle

4.1. Configuración del entorno del servidor Oracle DB

Se supone que el entorno de prueba para la conversión del juego de caracteres de Oracle está configurado de la siguiente manera en la PC local (Windows).

Oracle DB 서버 환경 구성
Configuración del entorno del servidor Oracle DB

Se instalaron tres instancias de Oracle DB en una PC y la configuración de cada una es la siguiente.

MedioambienteS.I.D.Conjunto de caracteres del servidorVersión de oráculoUsuario de prueba (esquema)
US7ASCII base de datos actualORAUS7US7ASCII11.2.0.1.0PIERNA
KO16MSWIN949 Base de datos actualORAMSWIN949KO16MSWIN94911.2.0.1.0PIERNA
Base de datos de destino AL32UTF8ORAUTFAL32UTF811.2.0.1.0PIERNA

DB Link está configurado de la siguiente manera.

SID generadoSID objetivoUsuario de conexión (esquema)propósito
ORAMSWIN949ORAUS7PIERNAPrueba de acceso y conversión US7ASCII en KO16MSWIN949
ORAUTFORAUS7PIERNAPrueba de conversión y acceso AL32UTF8 a US7ASCII

El script de creación de DB Link es el siguiente.

CREATE DATABASE LINK DL_US7
CONNECT TO leg IDENTIFIED BY leg
USING '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORAUS7)
    )
  )'
;

4.2. configuración de la mesa de prueba

El modelo de datos para la prueba es el siguiente.

Oracle Character Set 변환 테스트 테이블 구성
Configuración de la tabla de prueba de conversión de juegos de caracteres de Oracle

(Para fines de prueba, se omiten todos los detalles adicionales, como la normalización y la configuración del identificador. Se aplica la misma longitud a US7ASCII y MSWIN949, y se aumenta la longitud a AL32UTF8).

El modelo de datos anterior es una estructura en la que se agregan dos elementos (descripción de referencia, imagen de referencia) para la prueba al conjunto de datos de <Información sobre la cantidad de personas que suben y bajan por línea y estación de metro en Seúl> divulgado por Seúl Gobierno Metropolitano.

fuente: https://data.seoul.go.kr/dataList/OA-12252/S/1/datasetView.do

El DDL que crea el esquema del modelo de datos de prueba anterior es el siguiente.

-- 한글 2 byte 체계 스키마 생성(US7ASCII, MSWIN949)
CREATE TABLE SUB_MON_STAT 
(
      USE_MON            VARCHAR2(8),
      LINE_NUM           VARCHAR2(14), -- AL32UTF8: 50
      SUB_STA_ID         VARCHAR2(4),
      SUB_STA_NM         VARCHAR2(20), -- AL32UTF8: 100
      RIDE_PASGR_NUM     NUMBER(10),
      ALIGHT_PASGR_NUM   NUMBER(10),
      WORK_DT            VARCHAR2(8),
      COMMT              VARCHAR2(4000),
      REF_DES            CLOB,
      REF_IMG            BLOB
);

-- 한글 3 byte 체계 스키마 생성(AL32UTF8)
CREATE TABLE SUB_MON_STAT 
(
      USE_MON            VARCHAR2(8),
      LINE_NUM           VARCHAR2(50),
      SUB_STA_ID         VARCHAR2(4),
      SUB_STA_NM         VARCHAR2(100),
      RIDE_PASGR_NUM     NUMBER(10),
      ALIGHT_PASGR_NUM   NUMBER(10),
      WORK_DT            VARCHAR2(8),
      COMMT              VARCHAR2(4000),
      REF_DES            CLOB,
      REF_IMG            BLOB
);

En AL32UTF8, se requieren 3 bytes para 1 carácter coreano, por lo que la longitud de las dos columnas aumenta lo suficiente.

Los archivos de datos en formato Excel se pueden descargar desde la ruta de github a continuación.

* Archivo de datos de Excel: https://github.com/DAToolset/Oracle-CharacterSet-Conversion/raw/main/Número de pasajeros por estación de metro_Seoul Open Data_2013.xlsx

El DML para ingresar datos en la tabla se puede descargar desde la ruta de github a continuación.

* DML: https://github.com/DAToolset/Oracle-CharacterSet-Conversion/raw/main/Número de pasajeros por estación de metro_Seoul Open Data_2013.sql

Algunos extractos del archivo sql anterior se pegan a continuación.

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT, COMMT, REF_DES, REF_IMG)
VALUES('201301', '1호선', '0150', '서울역', 2199181, 1855268, '20130723', RPAD('서울역', 3000, '서울역'), RPAD('서울역', 3000, '서울역'), UTL_RAW.CAST_TO_RAW('12345'));

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0151', '시청', 737005, 726892, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0152', '종각', 1542710, 1446464, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0153', '종로3가', 1159253, 1126995, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0154', '종로5가', 816307, 820769, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0155', '동대문', 446527, 512163, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0156', '신설동', 496150, 484583, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0157', '제기동', 587740, 601913, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0158', '청량리(지하)', 966341, 985741, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '1호선', '0159', '동묘앞', 240864, 252523, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0202', '을지로입구', 1610744, 1607133, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0203', '을지로3가', 539622, 559866, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0204', '을지로4가', 364217, 365994, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0205', '동대문역사문화공원', 435358, 508405, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0206', '신당', 407110, 438543, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0207', '상왕십리', 288629, 274519, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0208', '왕십리', 583444, 498091, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0209', '한양대', 262492, 286399, '20130723');

INSERT INTO SUB_MON_STAT(USE_MON, LINE_NUM, SUB_STA_ID, SUB_STA_NM, RIDE_PASGR_NUM, ALIGHT_PASGR_NUM, WORK_DT)
VALUES('201301', '2호선', '0210', '뚝섬', 402631, 420166, '20130723');

...

Hasta ahora, hemos analizado la configuración del entorno de prueba y los scripts de configuración para la conversión del juego de caracteres de Oracle. A continuación, veremos diferentes formas de transformar el conjunto de caracteres en este entorno de prueba. Veremos el método recomendado por Oracle y el método que requiere una implementación separada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol