Saltar al contenido

¿La mejor manera de insertar filas múltiples en Oracle?

Te damos el hallazgo a este rompecabezas, o por lo menos eso esperamos. Si presentas alguna inquietud puedes escribirlo en el apartado de comentarios y sin dudas

Solución:

En Oracle, para insertar varias filas en la tabla t con las columnas col1, col2 y col3, puede usar la siguiente sintaxis:

INSERT ALL
   INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3')
   INTO t (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3')
   INTO t (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3')
   .
   .
   .
SELECT 1 FROM DUAL;

Esto funciona en Oracle:

insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
          select 8000,0,'Multi 8000',1 from dual
union all select 8001,0,'Multi 8001',1 from dual

Lo que hay que recordar aquí es usar el from dual declaración.

Utilice SQL*Loader. Se necesita un poco de configuración, pero si esto no es único, vale la pena.

Crear mesa

SQL> create table ldr_test (id number(10) primary key, description varchar2(20));
Table created.
SQL>

Crear CSV

oracle-2% cat ldr_test.csv
1,Apple
2,Orange
3,Pear
oracle-2% 

Crear archivo de control del cargador

oracle-2% cat ldr_test.ctl 
load data

 infile 'ldr_test.csv'
 into table ldr_test
 fields terminated by "," optionally enclosed by '"'              
 ( id, description )

oracle-2% 

Ejecutar el comando SQL*Loader

oracle-2% sqlldr  control=ldr_test.ctl
Password:

SQL*Loader: Release 9.2.0.5.0 - Production on Wed Sep 3 12:26:46 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Commit point reached - logical record count 3

Confirmar inserción

SQL> select * from ldr_test;

        ID DESCRIPTION
---------- --------------------
         1 Apple
         2 Orange
         3 Pear

SQL>

SQL*Loader tiene muchas opciones y puede tomar prácticamente cualquier archivo de texto como entrada. Incluso puede alinear los datos en su archivo de control si lo desea.

Aquí hay una página con más detalles -> SQL*Loader

Puedes añadir valor a nuestro contenido asistiendo con tu veteranía en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *