1. Usa el comando LOAD DATA de manera efectiva
Puntos Clave
- Carga Masiva de Datos: El comando LOAD DATA llena tablas desde archivos CSV o fuentes JDBC con rendimiento optimizado
- Operación Atómica: Toda la carga se revierte en caso de fallo a menos que la opción %NOJOURN deshabilite las transacciones
- Requisito de JVM: Usa un motor basado en Java que requiere instalación de JVM y privilegio %Gateway_Object:USE
- Mapeo de Columnas: Soporta mapeo de columnas posicional o nombrado con cláusula COLUMNS y especificación VALUES
- Tolerancia a Errores: Omite filas inválidas por defecto; la opción maxerrors controla el umbral de fallos
Notas Detalladas
Resumen
El comando LOAD DATA es la utilidad de alto rendimiento de InterSystems IRIS para carga masiva de datos desde fuentes externas a tablas SQL.
- Rendimiento: El motor de carga basado en Java puede importar cientos de gigabytes de datos en segundos en lugar de horas
- Prerequisito: Primero debe definir la estructura de la tabla destino usando CREATE TABLE (el comando solo llena tablas existentes)
- Requisito de JVM: Requiere instalación de Java Virtual Machine
Sintaxis Básica
La sintaxis básica es: `LOAD DATA FROM FILE 'filepath' INTO tablename`
- Coincidencia de columnas: Por defecto, coincide columnas de origen con columnas de tabla destino por posición usando el orden de columnas SQL (orden SELECT *)
- Manejo de encabezados: Si el archivo de origen contiene una fila de encabezado, configure para omitirla usando la cláusula USING con la opción from.file.header establecida en true
Configuración de la Cláusula USING
LOAD DATA proporciona opciones extensivas de configuración a través de una cláusula USING en formato JSON:
- from.file.header: Omitir primera línea como encabezado (true/false)
- from.file.skip: Número de líneas a omitir
- from.file.columnseparator: Delimitador de campos (por defecto es coma)
- from.file.charset: Codificación de caracteres
- from.file.escapechar: Carácter de escape para literales
- maxerrors: Máximo de errores de fila tolerables antes de revertir
Ejemplo: `LOAD DATA FROM FILE 'data.csv' INTO MyTable USING {"from":{"file":{"header":true,"columnseparator":"\\t"}}}`
Mapeo Avanzado de Columnas
Para mapeo avanzado de columnas:
- Cláusula COLUMNS: Especifica encabezados de columnas de origen y tipos de datos
- Cláusula INTO: Puede especificar un subconjunto de columnas destino
- Cláusula VALUES: Mapea encabezados de origen a columnas destino
- Capacidades: Cargar columnas seleccionadas, reordenar columnas, o cargar la misma columna de origen en múltiples columnas destino
Ejemplo: `LOAD DATA FROM FILE 'people.csv' COLUMNS (name VARCHAR, age INT) INTO Sample.Person (Name, Age)`
Opciones de Rendimiento
LOAD DATA soporta tres opciones que mejoran el rendimiento:
- LOAD BULK DATA: Deshabilita restricciones únicas, claves foráneas, validación NOT NULL, y construcción de índices
- Requiere: privilegios %NOCHECK, %NOINDEX, y %NOLOCK
- LOAD %NOJOURN DATA: Suprime journaling y transacciones
- Requiere: privilegio %NOJOURN
- Combinado: LOAD BULK %NOJOURN DATA para máxima velocidad
- Advertencia: Estas opciones sacrifican validación de datos y recuperabilidad; usar solo para datos bien validados
Fuentes de Datos JDBC
Carga desde fuentes JDBC: `LOAD DATA FROM JDBC CONNECTION connectionName TABLE sourceTable INTO targetTable`
- Requisito: Conexión JDBC pre-configurada
- Caso de uso: Carga masiva desde bases de datos relacionales externas
Manejo de Errores y Atomicidad
- Operación atómica: Toda la carga se revierte en caso de fallo a menos que la opción %NOJOURN deshabilite las transacciones
- Conteo de filas: La variable %ROWCOUNT contiene el conteo de filas cargadas exitosamente
- Filas inválidas: Omitidas durante la carga
- Registro de errores: Información detallada de errores escrita en las tablas de diagnóstico %SQL_Diag.Result y %SQL_Diag.Message
Referencias de Documentación
2. Trabaja con tablas de diagnóstico SQL (esquema %SQL_Diag)
Puntos Clave
- %SQL_Diag.Result: Almacena resultados de diagnóstico para importación DDL SQL y operaciones LOAD DATA
- %SQL_Diag.Message: Contiene mensajes de error detallados, niveles de severidad y valores SQLCODE
- Registro Automático: Los errores de LOAD DATA se escriben automáticamente en las tablas de diagnóstico
- Acceso desde Management Portal: Ver logs vía System Operation > System Logs > SQL Diagnostics Logs
- Estructura de Relación: %SQL_Diag.Message tiene relación diagResult con %SQL_Diag.Result
Notas Detalladas
Resumen
El esquema %SQL_Diag proporciona registro de diagnóstico completo para operaciones SQL en InterSystems IRIS, particularmente para comandos LOAD DATA y operaciones de importación DDL.
- Propósito: Captura información detallada sobre ejecución de operaciones SQL, errores y características de rendimiento
- Estructura: Dos tablas principales trabajando juntas
Tabla %SQL_Diag.Result
La tabla %SQL_Diag.Result sirve como registro maestro de diagnóstico:
- Contenido: Información de alto nivel sobre operaciones SQL
- Registro por operación: Cada ejecución de LOAD DATA crea una entrada
- Datos registrados: Estado de la operación, tiempo y resultados generales
- Rol: Actúa como contenedor para mensajes de diagnóstico relacionados
Tabla %SQL_Diag.Message
La tabla %SQL_Diag.Message contiene detalles de diagnóstico granulares:
- actor: Usuario o proceso ejecutando la operación
- message: Texto descriptivo explicando el evento de diagnóstico
- messageTime: Marca de tiempo cuando se generó el mensaje
- severity: Indicación de importancia del mensaje o nivel de error
- sqlcode: Valor SQLCODE para errores o códigos de estado
- diagResult: Propiedad de relación enlazando al registro padre %SQL_Diag.Result
- Almacenamiento: Datos subyacentes almacenados en global ^IRIS.sql.diag.message
Registro de Errores Durante LOAD DATA
Cuando LOAD DATA encuentra errores durante la carga masiva:
- Registro automático: Información de diagnóstico detallada escrita automáticamente
- Tipos de error capturados: Errores a nivel de fila, discordancias de tipo de dato, violaciones de restricciones, problemas de formato
- Detalle de diagnóstico: Captura qué filas fallaron y por qué
- Uso con maxerrors: Particularmente valioso cuando se permite a LOAD DATA omitir filas problemáticas
Acceso a Logs de Diagnóstico
Múltiples interfaces disponibles para acceder a logs de diagnóstico SQL:
- Management Portal: System Operation > System Logs > SQL Diagnostics Logs
- Muestra log cronológico de comandos LOAD DATA
- Muestra métricas de rendimiento y detalles de operación para el namespace actual
- Acceso programático: Consultar tablas %SQL_Diag usando SQL
- Ejemplo: `SELECT * FROM %SQL_Diag.Message WHERE severity > 3 ORDER BY messageTime DESC`
Mejores Prácticas
- Monitorear regularmente logs de diagnóstico después de operaciones de carga masiva
- Filtrar mensajes por severidad para priorizar errores críticos
- Correlacionar entradas de %SQL_Diag.Message con operaciones padre %SQL_Diag.Result
- Archivar o purgar datos de diagnóstico antiguos para prevenir crecimiento sin límites
- Incorporar consultas de diagnóstico en flujos de trabajo de carga automatizados
Referencias de Documentación
3. Comprende opciones de exportación de datos (modo físico vs lógico)
Puntos Clave
- Opciones de SelectMode: Controla el formato de datos para consultas y exportaciones (Logical=0, ODBC=1, Display=2)
- Modo Logical (por defecto): Retorna datos en formato de almacenamiento interno con caracteres del sistema
- Modo Display: Transforma datos a formato de visualización amigable usando métodos LogicalToDisplay()
- Modo ODBC: Convierte datos a formato compatible con ODBC para compatibilidad con herramientas externas
- Implicaciones de Exportación: SelectMode afecta cómo se representan fechas, horas, listas y valores nulos
Notas Detalladas
Resumen
InterSystems IRIS proporciona tres modos distintos de representación de datos que controlan cómo se formatean los resultados de consultas y datos exportados.
- Propósito: Determina si los datos exportados aparecen en formato de almacenamiento interno o formato de visualización transformado
- Valores SelectMode: Logical (0), ODBC (1), Display (2)
Modo Logical (SelectMode=0)
El modo Logical es la configuración por defecto y retorna datos exactamente como están almacenados en el formato interno de la base de datos.
- Fechas/Horas: Valores enteros internos (días desde 31 de diciembre de 1840 para fechas; segundos desde medianoche para horas)
- Listas: Dos caracteres no imprimibles (uno antes del primer elemento, uno como separador)
- Cadenas vacías/BLOBs: Representados por carácter no visible $CHAR(0)
- Valores booleanos: Almacenados como 1/0 u otras representaciones internas
- Casos de uso: Transferencias entre bases de datos, copias de seguridad de datos, preservación de representaciones internas exactas
Modo Display (SelectMode=2)
El modo Display transforma datos a formato legible para humanos usando el método LogicalToDisplay() de cada tipo de dato.
- Fechas: Cadenas formateadas como "2025-12-20"
- Horas: Visualización como "14:30:00"
- Listas: Elementos separados por espacios en blanco
- Cadenas vacías: Aparecen como cadenas vacías verdaderas ("") en lugar de $CHAR(0)
- Valores booleanos: Visualización como "true"/"false" o "1"/"0" dependiendo de la configuración
- Casos de uso: Reportes, datos para revisión humana, archivos para edición manual antes de re-importar
Modo ODBC (SelectMode=1)
El modo ODBC convierte datos a formatos compatibles con ODBC usando métodos LogicalToOdbc().
- Fechas: Formato YYYY-MM-DD
- Horas: Formato HH:MM:SS
- Listas: Separadores de coma entre elementos
- Valores NULL: Propiamente representados como SQL NULL
- Casos de uso: Bases de datos relacionales externas, herramientas BI, aplicaciones de hojas de cálculo, clientes conectados por ODBC
Configuración de SelectMode
SelectMode puede configurarse en múltiples niveles:
- Proceso actual: `$SYSTEM.SQL.Util.SetOption("SelectMode",n)` donde n es 0, 1, o 2
- Embedded SQL: Directiva `#sqlcompile select` (opciones: Logical, Display, ODBC, Runtime, Text, FDBMS)
- Dynamic SQL: Propiedad %SelectMode en el objeto statement
- Importación DDL: El parámetro SelectMode determina el modo para sentencias importadas
Consideraciones de Datos de Ida y Vuelta
Comprender las transformaciones de modo es crítico para escenarios de datos de ida y vuelta:
- Transformación de exportación: Datos exportados en modo Display u ODBC han sido transformados desde formato Logical
- Requisito de re-importación: Debe convertir de vuelta a formato Logical usando métodos DisplayToLogical() u OdbcToLogical()
- Modo Runtime: El modo select Runtime del compilador SQL permite conversión dinámica basada en %SelectMode en tiempo de ejecución
Directrices Prácticas de Exportación
- Modo Logical: Migraciones de bases de datos, copias de seguridad, transferencias InterSystems-a-InterSystems
- Modo ODBC: Bases de datos externas, herramientas BI, clientes ODBC esperando formatos SQL estándar
- Modo Display: Reportes legibles para humanos, archivos CSV para revisión manual, aplicaciones personalizadas esperando cadenas formateadas
- Documentación: Siempre documentar qué SelectMode se usó para las exportaciones
Referencias de Documentación
Resumen de Preparación para el Examen
Conceptos Críticos a Dominar:
- Sintaxis LOAD DATA: Conocer sintaxis básica FROM FILE, cláusula COLUMNS para mapeo de columnas y cláusula VALUES para mapear origen a columnas destino
- Opciones LOAD DATA: Comprender palabra clave BULK (deshabilita restricciones/índices), opción %NOJOURN (deshabilita journaling/transacciones) y sus requisitos de privilegios
- Configuración Cláusula USING: Dominar opciones JSON para manejo de fila de encabezado, especificación de delimitador, codificación charset y umbral maxerrors
- Requisitos JVM: Recordar que LOAD DATA requiere instalación de Java Virtual Machine y privilegio %Gateway_Object:USE
- Esquema %SQL_Diag: Saber que %SQL_Diag.Result registra operaciones y %SQL_Diag.Message almacena mensajes de error detallados con valores SQLCODE
- Acceso a Diagnóstico: Comprender ruta del Management Portal (System Operation > System Logs > SQL Diagnostics Logs) para ver errores de carga
- Valores SelectMode: Memorizar Logical=0 (almacenamiento interno), ODBC=1 (compatibilidad ODBC), Display=2 (formato amigable para usuario)
- Diferencias de Modo: Distinguir cómo aparecen fechas, horas, listas, cadenas vacías y valores NULL en cada SelectMode
Escenarios Comunes del Examen:
- Escribir comando LOAD DATA con delimitador personalizado y manejo de fila de encabezado
- Determinar uso apropiado de BULK y %NOJOURN basado en requisitos de validación de datos
- Consultar tablas %SQL_Diag para identificar por qué falló una operación LOAD DATA
- Seleccionar SelectMode correcto para exportar datos a herramientas ODBC externas
- Mapear columnas de archivo origen a columnas de tabla destino usando cláusulas COLUMNS y VALUES
- Calcular privilegios requeridos para operaciones LOAD BULK %NOJOURN DATA
- Interpretar niveles de severidad de mensajes de diagnóstico y valores SQLCODE
- Elegir entre modos Logical, Display y ODBC para requisitos específicos de exportación
Recomendaciones de Práctica Práctica:
- Crear archivos CSV de muestra con encabezados y usar LOAD DATA con varias configuraciones USING
- Ejecutar LOAD DATA con errores de datos intencionales y revisar tabla %SQL_Diag.Message
- Comparar rendimiento de LOAD con y sin opciones BULK y %NOJOURN
- Practicar escritura de cláusulas COLUMNS y VALUES para mapear columnas en diferentes órdenes
- Consultar SQL Diagnostics Logs desde Management Portal después de operaciones de carga
- Exportar datos de tabla en modos Logical, ODBC y Display y comparar resultados
- Configurar opción maxerrors y observar comportamiento de reversión cuando se excede el umbral
- Otorgar privilegios %Gateway_Object:USE, %NOCHECK, %NOINDEX, %NOLOCK y %NOJOURN a usuarios de prueba