Presentación comercial: PDF (ES) · PPTX (ES) · PDF (EN) · PPTX (EN)
Qué es NSAdaFile
nsadafile extrae datos de bases de datos Adabas y los exporta a formatos universales: csv, json, xml, tab y record. Soporta selección de campos por nombre corto o DDM, búsquedas con sintaxis Adabas (-search), consultas SQL con JOIN (-sql), lectura ordenada por descriptor (-sortby), rangos por ISN y ajuste de rendimiento (-multifetch, -blocksize).
Usos ideales:
- Exportación de datos para análisis (CSV/JSON).
- Integración con sistemas externos y APIs.
- Respaldo y migración de información.
- Auditoría y diagnóstico (modos
-fdt,-check,-checkfields,-debug).
Los números de base de datos, ficheros, campos y rutas de los ejemplos son ficticios.
Casos de uso
1. Exportación nocturna a CSV para análisis
Extraer un fichero completo con límite y guardarlo en disco para su procesado posterior.
nsadafile -dbid 50 -fnr 15 -limit 10000 -format csv -outfile /tmp/export/clientes.csv
2. Integración con una API mediante JSON
Extraer solo los campos necesarios y filtrar por ciudad con la sintaxis de búsqueda Adabas.
nsadafile -dbid 50 -fnr 15 -search "AB='MADRID'" -fields "AA,AB,AC" -format json -outfile /tmp/export/clientes_madrid.json
3. Auditoría de un rango de registros por ISN
Revisar los primeros 500 registros en formato legible de registro, incluyendo el ISN.
nsadafile -dbid 50 -fnr 15 -fromisn 1 -toisn 500 -isn -format record
3b. Lectura de un ISN concreto en modo ficha o lista
Mostrar un único registro: en ficha con -format form (alias de record) o en lista con -format list (alias de tab). Si el ISN no existe, devuelve error.
nsadafile -dbid 50 -fnr 15 -isnq 12345 -format form
nsadafile -dbid 50 -fnr 15 -isnq 12345 -fields "AA,AB" -format list
4. Explotación SQL con nombres DDM
Consultar con JOIN entre tablas definidas en el JSON de configuración (generado por nsddm).
nsadafile -dbid 50 -config /tmp/cfg/ddm50.json -sql "SELECT AA, AB FROM CLIENTES-MAESTROS WHERE AB='EMPRESA EJEMPLO'" -format csv
5. Verificación de consistencia DDM frente a FDT
Comparar el JSON de configuración con la FDT real de Adabas antes de una migración.
nsadafile -dbid 50 -config /tmp/cfg/ddm50.json -check -json -outfile /tmp/export/check.json
6. Validación de longitudes de campos
Detectar registros cuyo contenido supera la longitud definida, antes de una migración o carga. Sin -config usa la FDT viva del fichero; con -config/-ddmname usa las longitudes del DDM. Solo se validan formatos A/W/G/B.
nsadafile -dbid 50 -fnr 15 -checkfields -fields "AA,AB" -outfile /tmp/export/excesos.txt
Referencia de comandos
Conexión y selección del fichero
| Parámetro | Descripción | Requerido |
|---|---|---|
-dbid | ID de la base de datos Adabas | Sí |
-fnr | Número del fichero Adabas a extraer | Si no se usa -ddmname |
-ddmname | Nombre DDM (nombre lógico del fichero desde el JSON de configuración). Sobrescribe fnr si hay config | Si no se usa -fnr |
-config | Fichero JSON de configuración con definiciones del esquema | Si se usa -ddmname |
-input | Alias de -config (fichero JSON DDM, p. ej. ddm50.json) | No |
-etid | ETID (ID de transacción externa) para la conexión | No |
-readonly | Modo solo lectura (sin actualizaciones) | No |
Filtrado, orden y selección de datos
| Parámetro | Descripción | Requerido |
|---|---|---|
-sql | Sentencia SQL SELECT. Soporta SELECT, FROM, WHERE, JOIN (INNER, LEFT, RIGHT, FULL), ORDER BY, GROUP BY, LIMIT, OFFSET, DISTINCT | No |
-search | Búsqueda con sintaxis Adabas, por nombre corto (AA) o DDM. Admite =, rangos [a:b], and/or | No |
-sortby | Descriptor/superdescriptor para lectura en orden lógico (nombre corto o DDM) | No |
-fromisn | ISN inicial para lectura por secuencia | No |
-toisn | ISN final para lectura por secuencia | No |
-isnq | Lee un único ISN y termina (error si no existe). Excluyente con -search, -sql, -sortby, -fromisn y -toisn | No |
-fields | Campos a extraer. Admite nombre corto o DDM; MU (AO[1], AO[1,5]) y PE (AU[1], AV[1,1]). Si se omite, extrae todos | No |
-limit | Limita el número de registros extraídos | No |
-partialread | Habilita el modo de lectura parcial | No |
Formato y destino de salida
| Parámetro | Descripción | Requerido |
|---|---|---|
-format | Formato de salida: csv, json, xml, tab (alias list), record (alias form, ficha) (por defecto tab) | No |
-delimiter | Delimitador CSV (por defecto ;; en formato tab usa tabulación o un delimitador personalizado) | No |
-outfile | Ruta del fichero de salida (stdout si se omite) | No |
-isn | Incluye el ISN en la salida | No |
-fdt | Muestra la FDT (Field Definition Table) en lugar de los datos | No |
-silence | Modo silencioso (suprime banner y progreso) | No |
Rendimiento
| Parámetro | Descripción | Requerido |
|---|---|---|
-multifetch | Tamaño de multifetch para lecturas Adabas (por defecto 20) | No |
-blocksize | Tamaño de bloque para lecturas Adabas (por defecto 65536) | No |
-recordbuffershift | Desplazamiento del búfer de registro (por defecto 100) | No |
Diagnóstico, verificación y licencia
| Parámetro | Descripción | Requerido |
|---|---|---|
-check | Comprueba consistencia DDM/FDT: compara el JSON DDM con la FDT de Adabas (requiere -dbid y -config/-input) | No |
-checkfields | Valida longitudes: lee los registros y reporta los que superan la longitud definida (DDM de -config o FDT viva). Solo A/W/G/B; excluyente con -check, -fdt y -sql | No |
-json | Informe JSON legible por máquina para -check (a stdout o a -outfile) | No |
-verbose | Salida detallada para -check (muestra los campos correctos) | No |
-debug | Activa el log detallado para diagnóstico | No |
-version | Muestra la versión | No |
-license | Ruta al fichero license.key (por defecto: resolución automática) | No |
-license-status | Muestra el estado detallado de la licencia | No |
-renew-license | Renueva la licencia con un nuevo fichero license.key | No |
Ejemplos comentados
# 1. Extracción básica a stdout en formato tabulado
nsadafile -dbid 50 -fnr 15 -limit 10
# 2. JSON con campos seleccionados y búsqueda por descriptor
nsadafile -dbid 50 -fnr 15 -search "AA='CLI001'" -fields "AA,AB,AC" -format json -outfile /tmp/export/cli001.json
# 3. Rango por ISN ordenado por descriptor, en XML
nsadafile -dbid 50 -fnr 15 -fromisn 1 -toisn 500 -sortby "AA" -format xml -outfile /tmp/export/rango.xml
# 4. Consulta SQL con JOIN y nombres DDM
nsadafile -dbid 50 -config /tmp/cfg/ddm50.json -sql "SELECT a.AA, b.AB FROM CLIENTES-MAESTROS a INNER JOIN PEDIDOS-MAESTROS b ON a.AA=b.AA LIMIT 100" -format csv
# 5. FDT del fichero (estructura, sin datos)
nsadafile -dbid 50 -fnr 15 -fdt
# 6. Extracción grande con rendimiento ajustado y sin progreso
nsadafile -dbid 50 -fnr 15 -multifetch 50 -blocksize 131072 -limit 10000 -format json -silence -outfile /tmp/export/grande.json
# 7. Un ISN concreto en ficha y en lista
nsadafile -dbid 50 -fnr 15 -isnq 12345 -format form
nsadafile -dbid 50 -fnr 15 -isnq 12345 -fields "AA,AB" -format list
# 8. Validar longitudes contra el DDM y guardar las violaciones
nsadafile -dbid 50 -config /tmp/cfg/ddm50.json -ddmname CLIENTES-MAESTROS -checkfields -outfile /tmp/export/excesos.txt
Códigos de retorno
| Código | Significado |
|---|---|
0 | Éxito |
1 | Error en parámetros de línea de comandos |
2 | Error en el fichero de configuración |
3 | Error de conexión a la base de datos |
4 | Error de extracción de datos |
Preguntas frecuentes
¿Necesito siempre -config? No. Sin -config se trabaja directamente con -dbid y -fnr y nombres cortos de campo (AA, AB). -config es obligatorio si usa -ddmname, nombres DDM o -sql; ese JSON lo genera nsddm.
¿Qué formato de salida elijo? csv para hojas de cálculo y análisis, json para APIs y procesado programático, xml para integración empresarial, tab (o list) para lectura rápida en consola y record (o form) para inspección visual registro a registro. El delimitador CSV se ajusta con -delimiter.
¿Cómo veo un registro concreto? Con -isnq N (p. ej. -isnq 12345): lee solo ese ISN y termina; si no existe, devuelve error. Combínelo con -format form para verlo en ficha o -format list (con -fields) para verlo en lista. Para rangos use -fromisn/-toisn.
¿Cómo extraigo solo una parte del fichero? Combine -search (por índice), -sortby (orden lógico), -fromisn/-toisn (rango físico) y -limit (tope). Para grandes volúmenes, suba -multifetch y -blocksize.
¿Cómo verifico mi DDM antes de migrar? Con -check (y -json para salida máquina, -verbose para ver también los campos correctos). Requiere -dbid y -config/-input. Para estructura sin datos use -fdt; para diagnóstico, -debug.
¿Cómo detecto datos que no caben en la definición? Con -checkfields: lee los registros y lista los que superan la longitud definida (ISN, campo, longitud definida y real en bytes/runas). Sin -config compara contra la FDT viva; con -config/-ddmname, contra el DDM. Limite el alcance con -fields, -search, -fromisn/-toisn o -limit, y guarde el reporte con -outfile. Códigos: 0 sin excesos, 1 con excesos, 2 error.