VELOCIDADE DO ACCESS 2007
é... funciona com Access sendo o banco de dados "PaÃÂÂ"... mas, o Oracle sendo o banco de dados "Pai" como no meu caso, dá um "erro" ORA00923... poi o motor do driver não esta reconhecendo a cláusula "IN"..., por enquanto continuo sem solução... eeehhh mundo viu!!!!
Obrigado Roberto.
Obrigado Roberto.
Estou fazendo uns teste aqui, parece que vai funcionar se nos abrir os dois bancos.
o banco pai nos fazemos o select e o banco que irá receber os dados nos usamos o insert, só que parece que a tabela já tem que existir no banco mdb, vou continuar com os teste e te informo, há, se puder me mandar os dois bancos eu posso tenstar com eles, se não der não tem problema.
o banco pai nos fazemos o select e o banco que irá receber os dados nos usamos o insert, só que parece que a tabela já tem que existir no banco mdb, vou continuar com os teste e te informo, há, se puder me mandar os dois bancos eu posso tenstar com eles, se não der não tem problema.
Na situação que tenho aqui a table já existe no banco de destino.
Um problema que vi ali é que você abre e fecha o rsLocal cada vez que vai inserir um novo registro, e isso pode deixar lento o seu loop
Teste colocar o Open do rsLocal antes do While e o Close Depois do Loop, e coloque um Close antes do Goto Reiniciar também
Teste colocar o Open do rsLocal antes do While e o Close Depois do Loop, e coloque um Close antes do Goto Reiniciar também
Tive uma idéia que axo interessante:
Vc disse sobre tabela vinculada em access, então cria uma tabela vinculada e outra identica mas não vinculada.
Para fazer a migração dos dados tenta utilizar um comando assim
INSERT INTO tabela_n_vinculada SELECT * FROM tabela_vinculada
Creio que com isto não estariamos utilizando o VB e nem o loop de nossa linguagem para migrar os dados ... para testar a aplicação utilize a tabela não vinculada.
Vc disse sobre tabela vinculada em access, então cria uma tabela vinculada e outra identica mas não vinculada.
Para fazer a migração dos dados tenta utilizar um comando assim
INSERT INTO tabela_n_vinculada SELECT * FROM tabela_vinculada
Creio que com isto não estariamos utilizando o VB e nem o loop de nossa linguagem para migrar os dados ... para testar a aplicação utilize a tabela não vinculada.
Emerson,
Utilizado a sintaxe tal qual você fala, ocorre um erro com o Oracle --- ERRO 00923 ---
Utilizado a sintaxe tal qual você fala, ocorre um erro com o Oracle --- ERRO 00923 ---
Vc tentou fazer esta consulta direto no Access ??
Pois usando tabela vinculada do SQL Server funcionou perfeitamente.
1- Eu criei tabela access vinculada a outra no SQL Server
2- Criei uma tabela com a mesma estrutura do SQL Server no access, mas não vinculada
3- Utilizei o comando acima numa consulta dentro do Access para utilizar o Access como minha ferramenta de migração e nao precisar ficar loopando um RS
4- Esta consulta pode ser chamada disparada do VB sem problemas
Este processo migrou cerca de 10.000 registros do SQL Server para a tabela Access quase que imediatamente.
Agora postar número de erro é sacanagem, manda a descrição que ajuda mais ... nao tenho o Oracle instalado para consultar tabela de erros.
Espero ter ajudado, qualquer duvida postae.
Pois usando tabela vinculada do SQL Server funcionou perfeitamente.
INSERT INTO tabela_n_vinculada SELECT * FROM tabela_vinculada
1- Eu criei tabela access vinculada a outra no SQL Server
2- Criei uma tabela com a mesma estrutura do SQL Server no access, mas não vinculada
3- Utilizei o comando acima numa consulta dentro do Access para utilizar o Access como minha ferramenta de migração e nao precisar ficar loopando um RS
4- Esta consulta pode ser chamada disparada do VB sem problemas
Este processo migrou cerca de 10.000 registros do SQL Server para a tabela Access quase que imediatamente.
Agora postar número de erro é sacanagem, manda a descrição que ajuda mais ... nao tenho o Oracle instalado para consultar tabela de erros.
Espero ter ajudado, qualquer duvida postae.
Pois é, direto no Access funciona, porém tenho um "timeout" de acesso ao Oracle de 10min e a rotina de INSERT INTO, por ter mais de 4.000.000 de registros esta excedento a este tempo.
1- Primeiramente delete todos os registros e retire qualquer ÃÂÂndice existente na tabela NÃO vinculada onde serão feitas as inserções pois isto atrapalha o desempenho.
2- Especifique o tamanho dos campos para um tipo justo pois inserir em campos maiores também atrasa o processo.
3- Execute a rotina de compactar e reparar o arquivo .mdb previamente.
4- Certifique-se de que Todos os registros do seu SELECT conseguem migrar de uma base àoutra por que se ouver erro TODA operação será abortada. (O maior inconveniente deste processo)
5- Atente ao fato de que este comando vai utilizar o processador do micro que executá-lo independente de ser pelo VB ou Access.
6- Utilize o arquivo .mdb no micro onde o comando será executado para não utilizar desnecessariamente a rede.
7- Realize a rotina por partes acrescentando uma clausula where numa consulta Access só que parametrizada, poderia inclusive fazer um count de registro antes e dividir o processo em 2, 3 ou quantas etapas axar conveniente.
8- Finalizando, converse com o seu DBA e avalie com ele o problema pois ele está sendo muito bem pago para intervir nestas horas ... em último caso ele pode fazer uma PL pra vc continuar seu desenvolvimento VB de forma mais produtiva.
9- Caso funcione reporte os procedimentos para que fique registrado a eficiencia de nossa comunidade.
Valew
2- Especifique o tamanho dos campos para um tipo justo pois inserir em campos maiores também atrasa o processo.
3- Execute a rotina de compactar e reparar o arquivo .mdb previamente.
4- Certifique-se de que Todos os registros do seu SELECT conseguem migrar de uma base àoutra por que se ouver erro TODA operação será abortada. (O maior inconveniente deste processo)
5- Atente ao fato de que este comando vai utilizar o processador do micro que executá-lo independente de ser pelo VB ou Access.
6- Utilize o arquivo .mdb no micro onde o comando será executado para não utilizar desnecessariamente a rede.
7- Realize a rotina por partes acrescentando uma clausula where numa consulta Access só que parametrizada, poderia inclusive fazer um count de registro antes e dividir o processo em 2, 3 ou quantas etapas axar conveniente.
8- Finalizando, converse com o seu DBA e avalie com ele o problema pois ele está sendo muito bem pago para intervir nestas horas ... em último caso ele pode fazer uma PL pra vc continuar seu desenvolvimento VB de forma mais produtiva.
9- Caso funcione reporte os procedimentos para que fique registrado a eficiencia de nossa comunidade.
Valew
Emerson,
Estou seguinte estar orientações, e é claro... já abri um chamdo para os DBA's, de fato até agora não recebi nenhuma resposta satisfatória. Mas, creio que em breve eles me falarão algo. Até agora só tenho a agradecer a ajuda de todos.
Mas, a grande verdade é uma só, o Access não foi projetado para manipulara essa grande quantidade de registros. Porém (atualmente) como está com um INSERT INTO com a tabela vinculada. Deixarei assim, o que anda ocorrendo é algums erros de acesso, que é claro passei para os DBA resolverem.
Abraços a todos.
Estou seguinte estar orientações, e é claro... já abri um chamdo para os DBA's, de fato até agora não recebi nenhuma resposta satisfatória. Mas, creio que em breve eles me falarão algo. Até agora só tenho a agradecer a ajuda de todos.
Mas, a grande verdade é uma só, o Access não foi projetado para manipulara essa grande quantidade de registros. Porém (atualmente) como está com um INSERT INTO com a tabela vinculada. Deixarei assim, o que anda ocorrendo é algums erros de acesso, que é claro passei para os DBA resolverem.
Abraços a todos.
Tópico encerrado , respostas não são mais permitidas