He desarrollado una aplicación para importar de forma dinámica 12 conjuntos de datos junto con 43 tablas usando el comando LOAD DATA, que carga los datos de una fuente a una tabla SQL de IRIS.
Lista de los conjuntos de datos
Características
- Creación dinámica de tablas basadas en los datos de un archivo CSV.
- Importación del conjunto de datos mediante la función LOAD DATA por medio de Terminal o de la aplicación web.
- Eliminación del conjunto de datos de forma programada mediante Terminal o la aplicación web.
- Consulta de forma dinámica de los datos importados desde la aplicación web.
- Funcionalidad para importar datos en formato CSV, Excel o PDF.
- Aplicación web para consultar el estado del conjunto de datos.
- Alguno o todos los conjuntos de datos se pueden instalar o eliminar mediante un solo comando.
- Uso de las tablas %SQL_Diag.Result y %SQL_Diag.Message con LOAD DATA
Se recomienda leer la documentación relacionada LOAD DATA (SQL).
Cómo instalar o eliminar cualquier conjunto de datos desde Terminal
Utiliza el siguiente comando para importar un conjunto de datos en particular al introducir su ID o utiliza 999 para importar todos los conjuntos de datos
do ##class(dc.data.medical.utility).ImportDS(1)
A continuación se muestra el script principal para crear la tabla de forma dinámica y cargar los datos mediante la función LOAD DATA. Ten en cuenta que la tabla se crea de forma dinámica
//Get file name
SET filename=tRS.Get("Name")
//Remove .csv from the file name
SET tableName=$REPLACE("dc_data_"_ds_"."_tRS.Get("ItemName"),".csv","")
//Get columns based on the header row of csv file
Do ##class(dc.data.medical.utility).GetColTypes(filename,.coltype)
//Dynamically create table based on tablename and column types
SET qry = "CREATE TABLE "_tableName_" ("_coltype_")"
SET rset = ##class(%SQL.Statement).%ExecDirect(,qry)
//Check if table created successfully
IF rset.%SQLCODE
{
WRITE "ERROR : ",rset.%Message,!
}
ELSE
{
//Dynamically construct LOAD DATA statement
SET qry = "LOAD DATA FROM FILE '"_filename_"' INTO "_tableName_ " "_"USING {""from"":{""file"":{""header"":""1""}}}"
SET rset = ##class(%SQL.Statement).%ExecDirect(,qry)
// Check result set sqlcode, In case of error write resultset message
IF rset.%SQLCODE
{
WRITE "ERROR Table : " _tableName_" IMPORT FAILED: ",rset.%Message,!
}
ELSE
{
WRITE "SUCCESS table : " _tableName_" created and "_rset.%ROWCOUNT_" Rows Imported Successfully",!
}
}Utiliza el siguiente comando para eliminar un conjunto de datos en particular al introducir su ID o utiliza 999 para eliminar todos los conjuntos de datos
do ##class(dc.data.medical.utility).RemoveDS(1)
A continuación se muestra el script principal para eliminar la tabla de forma dinámica
//Get file name
SET filename=tRS.Get("Name")
//Remove .csv from file name
SET tableName=$REPLACE("dc_data_"_ds_"."_tRS.Get("ItemName"),".csv","")
//Drop table
SET qry = "DROP TABLE "_tableName
SET rset = ##class(%SQL.Statement).%ExecDirect(,qry)
//Check if table deleted successfully
IF rset.%SQLCODE
{
WRITE "ERROR : ",rset.%Message,!
}
ELSE
{
WRITE "Table "_tableName_" deleted successfully",!
}
Cómo instalar o eliminar cualquier conjunto de datos desde una aplicación web
Ve al panel de control de la aplicación:
http://localhost:52773/csp/datasets/index.csp Si el conjunto de datos no está instalado, el botón "Install DataSet" estará visible y si el conjunto de datos está instalado, el botón "Remove Dataset" estará visible.
Solo hay que hacer clic en el botón adecuado para instalar o eliminar cualquier conjunto de datos
.png)
Cómo visualizar y exportar datos desde Dataset
Ve a la página View Datasets http://localhost:52773/csp/datasets/datasets.csp
Selecciona un conjunto de datos específico y después una tabla de la lista. Haz clic en el botón Excel, CSV o PDF para exportar los datos.
.png)
Espero que os resulte útil.