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.

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.

 


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