Pessoal, boa tarde. Estou desenhando um processo para ler um arquivo do servidor e gravar algumas informações desse arquivo em uma tabela no banco. Em cada linha do arquivo tenho um ID que será utilizado para encontrar o registro correspondente na tabela e fazer o UPDATE.
Primeiramente, vamos ao meu cenário: Banco: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 Aplicação: Oracle E-Business Suite 11.5.10.2 Tabela: A tabela é de funcionários, no momento tem um pouco mais de 21.000 registros. Mas já sei que no futuro terá uma carga de mais de 300.000. O campo que vou utilizar para identificar os registros tem índice, seria o número de cadastro do funcionário (um VARCHAR2(30)) Arquivo: O modelo que tenho de exemplo tem em torno de 19 mil linhas, mas isso pode variar bastante Precisam de mais alguma informação? Estou analisando as possíveis maneiras de fazer isso e gostaria da opinião de vocês. 1) A maneira mais simples e creio que a mais utilizada seria simplesmente ler o arquivo e para cada linha do arquivo fazer um UPDATE na tabela. Mas não sei dizer se é a mais performática. 2) Poderia criar uma global temporary table e carregar ela primeiro com todos os registros do arquivo e depois em um único UPDATE faria a atualização, fazendo o JOIN da tabela temporária com a tabela de destino. 3) No lugar da GTT (da opção 2), poderia utilizar uma collection. Mas não sei qual o limite de dados de uma collection. Será que aguenta muitos registros? Também gostaria da opinião sobre o uso do FORALL, BULK COLLECT ou outro recurso interessante nesse cenário. Acham válido? Teria bons ganhos? Obrigado. -- Eduardo Schurtz