Pergunta

Planejamos migrar nosso banco de dados para o Oracle. Precisamos verificar manualmente cada um dos SQL incorporados está trabalhando no Oracle, pois poucos podem seguir diferentes regras do SQL. Agora minha necessidade é muito simples.

Preciso navegar por um arquivo que possa conter consultas como essa.

String sql = "selecione * do teste onde name ="+teste+"e idade ="+idade;

Existem quase 1000 arquivos e cada arquivo tem diferentes tipos de consultas como essa, onde eu tenho que arrancar a consulta sozinha, o que fiz através de um script Unix. Mas preciso converter essas consultas baseadas em Java em consultas compatíveis com Oracle.

ou seja. Selecione * no teste onde nome = "nome" e idade = "idade"

Basicamente, preciso verificar a sintaxe das consultas com isso. Eu vi algo assim no sapo, mas tenho mais de 1000 arquivos e não consigo alterar manualmente cada um.

Vou explicar mais eu a pergunta não está clara

Foi útil?

Solução

Por motivos de desempenho e segurança, você deve usar o preparestatement.bind (...) em vez de concatenação de string para criar suas seqüências de sql.

Não conheço uma maneira de resolver esse problema além de corrigir o código que precisa ser corrigido. Se você conseguir encontrar padrões comuns, poderá automatizar parte da edição usando o Find/Substituir ou o Sed ou alguma outra ferramenta, desde que você seja o resultado antes de verificá -lo.

Se houver milhares de arquivos, acho que existe uma equipe de tamanho razoável que construiu o código dessa maneira. Parece justo compartilhar a carga de trabalho entre as pessoas que construíram o sistema, em vez de despejar tudo em uma pessoa. Caso contrário, você acabará como o "SQL Fixing Guy" e ninguém mais na equipe terá qualquer incentivo para escrever o código SQL de uma maneira mais portátil.

Outras dicas

Seu aplicativo atual executa o SQL por meio de uma classe comum? Você poderia adicionar alguns logs para imprimir o SQL bruto nesta classe comum? A partir dessa saída, você pode escrever um pequeno script para executar cada declaração contra o Oracle.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top