¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como INSERIR todos os registros de uma tabela interna em uma tabela externa de banco de dados Oracle em uma única declaração SQL

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

Olá,

Estou procurando a sintaxe correta para INSERIR todos os registros de uma tabela interna em uma tabela externa do banco de dados Oracle em uma única declaração SQL. Não há problemas com a conectividade mantida através do DBCO.

Consigo conectar, recuperar, atualizar, excluir e inserir registros na tabela do banco de dados externo.

Atualmente estou percorrendo uma tabela interna e inserindo registros um por um, o que leva muito tempo

quando há milhares de registros.

Gostaria de inserir todos os registros da tabela interna em uma única declaração SQL sem ter que

percorrer a tabela interna.

Tenho tentado com a seguinte declaração, mas até agora sem sucesso:

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...

Consegui o que você está pedindo criando um dblink do Oracle no banco de dados SAP. Os Abapers costumavam poder fazer isso na versão 4.5 e 4.7, mas talvez você precise pedir ao seu Basis para fazer isso no ECC6.0. Este método não requer o uso do tcode DBCO nem exige entradas no arquivo tnsnames.ora. Aqui está um código que utilizei para criar o link do banco de dados e transferir todos os dados da tabela FMIOI do SAP para uma tabela chamada TSAP_FMIOI em um banco de dados Oracle externo. Este método transfere os dados muito rapidamente.

Talvez esta declaração precise ser feita no nível do Oracle em vez 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.

Aqui estão as instruções que uso para executar um procedimento armazenado no banco de dados remoto e copiar a tabela FMIOI na tabela remota chamada 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...

Olá Dvas,

teste este ([inserção em massa|http://www.dba-oracle.com/oracle_news/news_plsql_forall_performance_insert.htm])

EXECUTAR IMEDIATO 'TRUNCATE TABLE products';
Start_time := DBMS_UTILITY.get_time;
PARA TODO i em products_tab.first .. products_tab.last
 INSERIR EM products VALORES products_tab(i);
end_time := DBMS_UTILITY.get_time;
DBMS_OUTPUT.PUT_LINE(u2018Inserção em massa: u2019||to_char(end_time-start_time));
COMMIT;
FIM;

Saudações,

Clemens

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

Olá,

Estou com o mesmo problema. Preciso copiar registros da tabela SAP para a tabela EXT usando um DBCO.

Não entendi a última resposta...

Poderia me ajudar?

1. Após abrir a conexão com o banco de dados externo, posso acessar a tabela SAP usando um EXEC SQL? Como?

2. Posso utilizar esta instrução?

INSERT INTO ZZ_MARA@DDDSVI

(MATNR, LVORM)

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

Muito obrigado.

Mauro

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

Olá Dev,

Faça alguma pesquisa e desenvolvimento com a declaração DML do Oracle Merge . Poderia esclarecer um pouco sobre o problema?

Saudações.

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?