2010-04-05 11 views
1

Nous prévoyons de migrer notre base de données vers Oracle. Nous avons besoin de vérifier manuellement chaque SQL embarqué fonctionne dans Oracle car peu peuvent suivre des règles SQL différentes.Maintenant, mon besoin est très simple.requête JDBC à Oracle

J'ai besoin de parcourir un fichier qui peut contenir des requêtes comme celle-ci. Chaîne sql = "select * from test où name =" + test + "et age =" + age;

Il y a près de 1000 fichiers et chaque fichier a différentes sortes de requêtes comme celle-ci où je dois extraire la requête que j'ai faite par un script Unix. Mais j'ai besoin de convertir ces requêtes Java en requêtes compatibles Oracle.

ie. select * from test où name = "nom" et age = "age"

Fondamentalement, j'ai besoin de vérifier la syntaxe des requêtes par ceci.J'ai vu quelque chose comme ça dans TOAD mais j'ai plus de 1000 fichiers et ne peut pas changer manuellement chacun d'eux.Est-il un moyen?

Je vais vous expliquer plus je la question n'est pas clair

Répondre

2

Pour des raisons de performance et de sécurité, vous devez utiliser PreparedStatement.bind (...) plutôt que de concaténation de chaîne pour construire vos chaînes SQL.

Je ne connais pas de moyen de résoudre ce problème autrement qu'en corrigeant le code qui doit être corrigé. Si vous pouvez trouver des modèles communs, vous pouvez automatiser certaines opérations d'édition en utilisant find/replace ou sed ou un autre outil, tant que vous différez le résultat avant de l'enregistrer.

S'il y a des milliers de fichiers, je suppose que il y a une équipe de taille raisonnable qui a construit le code de cette façon. Il semble juste de partager la charge de travail entre les personnes qui ont construit le système, plutôt que de tout jeter sur une seule personne. Dans le cas contraire, vous finirez par devenir le "correcteur SQL" et personne d'autre dans l'équipe n'aura d'incitation à écrire du code SQL de manière plus portable.

0

Votre application actuelle exécute-t-elle SQL via une classe commune? Pourriez-vous ajouter une connexion pour imprimer le SQL brut dans cette classe commune? A partir de cette sortie, vous pouvez écrire un petit script pour exécuter chaque instruction contre Oracle.