Publicado 07. noviembre 2023
Actualizado en octubre de 2025
Introducción
KeepTool 16 presenta una potente mejora: compatibilidad nativa con scripts de inserción masiva de Oracle. Aunque los usuarios llevan mucho tiempo apreciando la capacidad de generar scripts INSERT a partir de los datos de Hora, la nueva versión va más allá y optimiza el rendimiento para grandes volúmenes de datos.
Repasemos el comportamiento en Hora 15 y luego exploremos las novedades de la versión 16.
Resumen: scripts de inserción en Hora 15
Supongamos que está conectado al esquema HR de Oracle y ve los datos de la tabla JOB_HISTORY. Haga clic con el botón derecho del ratón en la cuadrícula de datos y seleccione «Crear script INSERT».

Elemento de menú Crear script INSERT en la cuadrícula de contenido de datos de Hora
Verá dos opciones:
-
Guardar en archivo
-
Copiar al portapapeles
Sea cual sea la opción que elija, Hora genera un script INSERT estándar. El script comienza con el código estándar de SQL*Plus (configuración de variables), incluye comentarios para desactivar los desencadenadores o las restricciones FK si es necesario, luego genera sentencias INSERT individuales por fila y, finalmente, vuelve a activar las restricciones y termina con un COMMIT.

El editor SQL muestra un script INSERT tradicional creado por Hora
Este enfoque funciona bien para conjuntos de datos moderados, pero puede volverse lento o difícil de manejar cuando aumentan los volúmenes de inserción.
Novedades de Hora / KeepTool 16
La versión 16 aporta varias mejoras a la generación de scripts:
-
Opción de inserción masiva: ahora puede agrupar varias filas en una sola instrucción INSERT, lo que mejora el rendimiento de la ejecución.
-
Inserciones de ruta directa: opcionalmente, genere scripts que utilicen las sugerencias de inserción de ruta directa de Oracle para una carga aún más rápida.
-
División de scripts: los scripts de inserción grandes se pueden dividir en varios archivos más pequeños, lo que mejora la usabilidad y el mantenimiento del editor.
-
Estas opciones se pueden configurar completamente en la pestaña de configuración de contenido de datos.
Veamos cada mejora con más detalle.
Inserciones masivas con INSERT ALL
Para admitir la inserción masiva, hemos adoptado la INSERT ALLsintaxis de Oracle.
En el cuadro de diálogo de configuración, puede definir un tamaño masivo, es decir, cuántas filas se incluirán por cada instrucción INSERT ALL.

Contenido de datos: opción de tamaño de lote del script de inserción
Si establece el tamaño del lote en 1, se comportará exactamente igual que en Hora 15 (inserciones individuales). En nuestra demostración, lo hemos establecido en 3; Hora genera sentencias como:
INSERT ALL
INTO JOB_HISTORY( EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID )
VALUES( 1, TO_DATE('20.01.0017 00:00:00'), TO_DATE('08.01.2023 10:09:43'), 'AD_PRES', 90 )
EN JOB_HISTORY( EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID )
VALUES( 1, TO_DATE('20.01.2017 00:00:00'), TO_DATE('08.01.2023 10:54:41'), 'AD_PRES', 90 )
EN JOB_HISTORY( EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID )
VALUES( 102, TO_DATE('13.01.2001 00:00:00'), TO_DATE('24.07.2006 00:00:00'), 'IT_PROG', 60 )
SELECT 1 FROM DUAL
/
En Oracle 23c, Hora optimiza aún más, omitiendo los nombres de columna repetidos y la cláusula SELECT 1 FROM DUAL cláusula donde está permitido.
INSERT ALL INTO JOB_HISTORY (EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID)
VALUES( 1, TO_DATE('20.01.0017 00:00:00'), TO_DATE('08.01.2023 10:09:43'), 'AD_PRES', 90 )
, VALUES( 1, TO_DATE('20.01.2017 00:00:00'), TO_DATE('08.01.2023 10:54:41'), 'AD_PRES', 90 )
, VALUES( 102, TO_DATE('13.01.2001 00:00:00'), TO_DATE('24.07.2006 00:00:00'), 'IT_PROG', 60 )
/
Aunque las inserciones masivas no siempre garantizan un rendimiento más rápido en todos los casos, las pruebas sugieren que a menudo superan a las inserciones tradicionales fila por fila.
Inserciones de ruta directa
Para mejorar aún más la velocidad, se admiten las inserciones de ruta directa. Estas omiten parte del procesamiento SQL convencional, pero tienen sus inconvenientes. Utilice esta opción con precaución.
Si está habilitada:
-
Se añade una APPEND_VALUES se añade una sugerencia (para 11g+; las versiones anteriores utilizan APPEND).
-
Cada INSERT va seguido de un COMMIT, para garantizar que las operaciones paralelas se completan correctamente.

Contenido de datos: opción de sentencias INSERT de ruta directa (/*+append*/)
INSERT /*+append_values*/ ALL
INTO JOB_HISTORY (EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID)
VALUES ( 1, TO_DATE('20.01.0017 00:00:00'), TO_DATE('08.01.2023 10:09:43'), 'AD_PRES', 90)
EN JOB_HISTORY (EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID)
VALORES ( 1, TO_DATE('20.01.2017 00:00:00'), TO_DATE('08.01.2023 10:54:41'), 'AD_PRES', 90)
EN JOB_HISTORY (EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID)
VALORES ( 102, TO_DATE('13.01.2001 00:00:00'), TO_DATE('24.07.2006 00:00:00'), 'IT_PROG', 60)
SELECT 1 FROM DUAL;
/
COMMIT;
/
Se ha creado una instrucción INSERT de ruta directa.
División de scripts grandes en fragmentos
Los conjuntos de datos grandes pueden generar scripts enormes (cientos de MB), que son difíciles de abrir o editar. Hora 16 le permite dividir los scripts de inserción en varios archivos en función del tamaño máximo de archivo.

El script INSERT se ha dividido en 3 fragmentos
Por comodidad, recomendamos comenzar con un tamaño predeterminado de 50 MB cuando se utiliza el editor SQL integrado.
Resumen de opciones de configuración
En la pestaña Contenido de datos, ahora están disponibles los siguientes controles:
-
Dividir scripts de inserción cada MB: comienza un nuevo archivo cuando se alcanza el límite de tamaño.
-
Tamaño masivo del script de inserción: número de filas por INSERT ALL
-
Insertar en una sola línea: si se deben escribir las cláusulas de campo y valor en una sola línea (para el modo no masivo).
-
Inserciones de ruta directa: alternar entre añadir sugerencias y confirmaciones
-
Usar literales de marca de tiempo para columnas DATE: garantiza la independencia del script de la configuración NLS
-
Escapar literales no ASCII: serializa correctamente el texto problemático

Resumen de las opciones relacionadas con el script INSERT
Resumen
Las mejoras de Hora 16 en la generación de scripts INSERT (inserciones masivas, compatibilidad con rutas directas, división de archivos y mucho más) son especialmente beneficiosas para operaciones con grandes volúmenes de datos, en las que el rendimiento es fundamental.
Si maneja conjuntos de datos de gran tamaño, estas características pueden reducir el tiempo de ejecución y mejorar la capacidad de gestión de los scripts generados.
Anexo
La versión 16.1.0 introdujo un cuadro de diálogo de vista previa modal para ajustar las opciones del script INSERT antes de su generación. También
puede guardar la configuración personalizada como predeterminada.

Cuadro de diálogo de vista previa de las opciones de script INSERT
➡️ Pruebe KeepTool gratis
Las herramientas Oracle de KeepTool están diseñadas específicamente para desarrolladores, administradores de bases de datos (DBA) y equipos de soporte. Con más de 25 años de experiencia, optimizamos continuamente nuestro software para que el análisis y la documentación de sus bases de datos sean más rápidos, eficientes y claros.