Artículo
· 25 abr, 2022 Lectura de 2 min

Uso del registro %SQL_Diag junto con la nueva funcionalidad LOAD DATA

En este artículo, explicaré el uso de las tablas %SQL_Diag.Result y %SQL_Diag.Message junto con la nueva funcionalidad LOAD DATA.

Se recomienda revisar primero la documentación LOAD DATA.

Después del éxito de una operación, LOAD DATA inserta un registro en la tabla %SQL_Diag.Result y los detalles se insertan en la tabla %SQL_Diag.Message

A continuación se muestra el comando básico cuando la tabla ya está creada y el archivo de origen no contiene una fila de encabezado.

LOAD DATA FROM FILE 'C://TEMP/mydata.txt' 
INTO MyTable

El nombre del archivo debe incluir un sufijo .txt o .csv (valores separados por comas) y tanto el origen como el destino tienen la misma secuencia de columnas de datos.

Cargando desde el origen del archivo: Encabezado (Header)

Para especificar que el archivo de datos tiene una fila de encabezado, usa el parámetro booleano de encabezado, como se muestra en el siguiente ejemplo:

LOAD DATA FROM FILE 'C://TEMP/mydata.txt' 
INTO Sample.Employees
USING {"from":{"file":{"header":"1"}}}

Estoy usando el mismo comando en mi aplicación Medical Datasets

SET qry = "LOAD DATA FROM FILE  '"_filename_"' INTO "_tableName_ " "_"USING {""from"":{""file"":{""header"":""1""}}}"
SET rset = ##class(%SQL.Statement).%ExecDirect(,qry)

Aquí filename es una ruta de archivo completa y tableName es un nombre de tabla donde se deben cargar los datos.

 

Registro %SQL_Diag


Después de cada operación exitosa, LOAD DATA insertará un registro en las tablas %SQL_Diag.Result y %SQL_Diag.Message.
 

Tabla %SQL_Diag.Result

A continuación se muestra la estructura de %SQL_Diag.Result 

Para obtener los detalles, necesitamos obtener el ID máximo de la tabla %SQL_Diag.Result después de la operación LOAD DATA.
A continuación se muestra el comando SQL para obtener la ID máxima:

SET qry = "SELECT id FROM %SQL_Diag.Result WHERE ID = (SELECT MAX(ID) FROM %SQL_Diag.Result )"

Supongamos que la selección de MAX (ID) devuelve 5 de la tabla %SQL_Diag.Result que demostré en la vista previa de mi aplicación en Open Exchange.

 

Podemos usar Management Portal SQL o $SYSTEM.SQL.Shell() para ver los detalles

SELECT * FROM %SQL_Diag.Result WHERE ID = 5

Tabla %SQL_Diag.Message

En caso de errores, el sistema guarda el número de errores en la columna de recuento de errores de la tabla %SQL.Diag.Result.
Estos errores se pueden ver en la tabla %SQL_Diag.Message usando  %SQL.Diag.Result ID contra la columna %SQL_Diag.Message diagResult.

A continuación se muestra la estructura de la tabla %SQL_Diag.Message

A continuación se muestra el comando para revisar los detalles de los errores:

SELECT * FROM %SQL_Diag.Message WHERE severity = 'error' and diagResult = 5

%SQL_Diag.Message muestra los detalles de los errores.
 

Comentarios (0)1
Inicie sesión o regístrese para continuar