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 (modo
-fdt,-check,-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
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
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 |
-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, record (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 |
-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
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 para lectura rápida en consola y record para inspección visual registro a registro. El delimitador CSV se ajusta con -delimiter.
¿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.