sql >> Base de Datos >  >> RDS >> Oracle

Cómo generar declaraciones INSERT a partir de una consulta cuando se usa SQLcl (Oracle)

Al usar SQLcl con Oracle Database, puede configurar SQLFORMAT para insert para generar los resultados de la consulta como INSERT declaraciones.

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SET SQLFORMAT insert;
SELECT * FROM regions;

Resultado:

REM INSERTING into REGIONS
SET DEFINE OFF;
Insert into REGIONS (REGION_ID,REGION_NAME) values (1,'Europe');
Insert into REGIONS (REGION_ID,REGION_NAME) values (2,'Americas');
Insert into REGIONS (REGION_ID,REGION_NAME) values (3,'Asia');
Insert into REGIONS (REGION_ID,REGION_NAME) values (4,'Middle East and Africa');

4 rows selected.

Para que quede claro, estos son los resultados de la consulta cuando se usa ansiconsole :

SET SQLFORMAT ansiconsole;
SELECT * FROM regions;

Resultado:

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

Exportar a un archivo

Si necesita almacenar el INSERT declaraciones en un archivo, puede usar el SPOOL comando para exportar los resultados a un archivo.

SET SQLFORMAT insert;
SPOOL '/Users/barney/data/insert_regions.sql';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole;

Eso exportó el resultado a un archivo llamado insert_regions.sql en la ubicación especificada.

Una vez que la consulta se exportó a un archivo, configuré SPOOL a off y SQLFORMAT a ansiconcole .

Así es como se ve el archivo resultante:

REM INSERTING into REGIONS
SET DEFINE OFF;
Insert into REGIONS (REGION_ID,REGION_NAME) values (1,'Europe');
Insert into REGIONS (REGION_ID,REGION_NAME) values (2,'Americas');
Insert into REGIONS (REGION_ID,REGION_NAME) values (3,'Asia');
Insert into REGIONS (REGION_ID,REGION_NAME) values (4,'Middle East and Africa');

4 rows selected. 

Eliminar comentarios

Puede eliminar la X rows selected con SET FEEDBACK off :

SET SQLFORMAT insert;
SET FEEDBACK off;
SELECT * FROM regions;
SET FEEDBACK on;
SET SQLFORMAT ansiconsole;

Resultado:

REM INSERTING into REGIONS
SET DEFINE OFF;
Insert into REGIONS (REGION_ID,REGION_NAME) values (1,'Europe');
Insert into REGIONS (REGION_ID,REGION_NAME) values (2,'Americas');
Insert into REGIONS (REGION_ID,REGION_NAME) values (3,'Asia');
Insert into REGIONS (REGION_ID,REGION_NAME) values (4,'Middle East and Africa');

En este caso, convertí FEEDBACK volver a encender después de exportar el archivo y configurar SQLFORMAT volver a ansiconsole .