¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo INSERTAR todos los registros de una tabla interna en una tabla externa de base de datos Oracle en una sola declaración SQL

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 39 Vistas
0
Cargando...

Hola,

Estoy buscando la sintaxis correcta para INSERTAR todos los registros de una tabla interna en una tabla externa de base de datos Oracle en una sola declaración SQL. No hay problemas con la conectividad mantenida a través de DBCO.

Puedo conectar, recuperar, actualizar, eliminar e insertar registros en la tabla de la base de datos externa.

Actualmente estoy recorriendo una tabla interna e insertando registros uno por uno y esto lleva mucho tiempo

cuando hay miles de registros.

Me gustaría insertar todos los registros de la tabla interna en una sola declaración SQL sin tener que

recorrer la tabla interna.

He estado intentando con la siguiente declaración pero hasta ahora sin suerte:

INSERT INTO <ext.table> (campoA, campoB, campoC)

SELECT sapfldA, sapfldB, sapfldC

FROM TABLE <sap.table>

-Dvas

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Logré lo que estás pidiendo creando un dblink de Oracle en la base de datos de SAP. Los Abaper solían poder hacer esto en 4.5 y 4.7, pero es posible que necesites pedirle a tu Basis que lo haga en ECC6.0. Este método no necesita usar el tcode DBCO ni requiere entradas en el archivo tnsnames.ora. Aquí tienes un código que utilicé para crear el enlace de base de datos y transferir todos los datos de la tabla FMIOI de SAP a una tabla llamada TSAP_FMIOI en una base de datos Oracle externa. Este método transfiere los datos muy rápidamente.

Es posible que esta declaración deba hacerse a nivel de Oracle en lugar de usar ABAP:

EXEC SQL.

CREATE DATABASE LINK xxxLINKNAMExxx CONNECT TO xxxDBUSERNAMExxx

IDENTIFIED BY xxxDBPASSWORDxxx USING

'(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = xx.xx.xxx.xxx)

(PORT = 1521)) (CONNECT_DATA = (SID = xxxx))'

ENDEXEC.

Aquí están las instrucciones que uso para ejecutar un procedimiento almacenado en la base de datos remota y copiar la tabla FMIOI en la tabla remota llamada TSAP_FMIOI:

EXEC SQL.

EXECUTE PROCEDURE SAP_PKG.TRUNCATE_TSAP_FMIOI@xxxDBLINKNAMExxx

ENDEXEC.

EXEC SQL.

INSERT INTO TSAP_FMIOI@xxxDBLINKNAMExxx SELECT * FROM FMIOI

WHERE MANDT = 100

ENDEXEC.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Dvas,

prueba así ([inserción masiva|http://www.dba-oracle.com/oracle_news/news_plsql_forall_performance_insert.htm])

EJECUTAR INMEDIATO 'TRUNCATE TABLE products';
Start_time := DBMS_UTILITY.get_time;
PARA TODO i en products_tab.first .. products_tab.last
 INSERTAR EN products VALORES products_tab(i);
end_time := DBMS_UTILITY.get_time;
DBMS_OUTPUT.PUT_LINE(u2018Inserción masiva: u2019||to_char(end_time-start_time));
COMMIT;
FIN;

Saludos,

Clemens

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Tengo el mismo problema. Debo copiar registros de la tabla SAP a la tabla EXT utilizando un DBCO.

No entiendo la última respuesta....

¿Podrías ayudarme?

1. después de abrir la conexión a la base de datos externa, ¿puedo acceder a la tabla SAP utilizando un EXEC SQL? ¿Cómo?

2. ¿Puedo utilizar esta sentencia?

INSERT INTO ZZ_MARA@DDDSVI

(MATNR, LVORM)

SELECT (MATNR, LVORM) FROM MARA WHERE MTART = :LV_MTART

Muchas gracias.

Mauro

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Dev,

Realiza algo de investigación y desarrollo con la declaración DML de Oracle Merge . ¿Podrías arrojar algo de luz sobre el problema?

Saludos.

Sarbajit.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?