سؤال

نحن نخطط لترحيل DB الخاص بنا إلى Oracle. نحتاج إلى التحقق يدويًا من كل من SQL المدمج في Oracle حيث قد يتبع عدد قليل من قواعد SQL المختلفة. الآن حاجتي بسيطة للغاية.

أحتاج إلى تصفح ملف قد يحتوي على استفسارات مثل هذا.

String SQL = "SELECT * FROM TEST WHERE NAME ="+Test+"and Age ="+Age ؛

يوجد ما يقرب من 1000 ملف وكل ملف لديه نوع مختلف من الاستعلامات مثل هذا حيث يجب أن أتحرك الاستعلام وحده الذي قمت به من خلال برنامج نصي UNIX. لكنني بحاجة إلى تحويل هذه الاستعلامات المستندة إلى Java إلى استفسارات متوافقة مع Oracle.

بمعنى آخر. حدد * من الاختبار حيث name = "name" و Age = "Age"

في الأساس ، أحتاج إلى التحقق من بناء جملة الاستعلامات من خلال هذا. لقد رأيت شيئًا كهذا في الضفدع ولكن لدي أكثر من 1000 ملف ولا يمكنني تغيير كل واحد.

سأشرح أكثر أنا السؤال غير واضح

هل كانت مفيدة؟

المحلول

لأسباب تتعلق بالأداء والأمان ، يجب عليك استخدام reparedStatement.bind (...) بدلاً من السلسلة المتسلسلة لبناء سلاسل SQL الخاصة بك.

لا أعرف طريقة لمعالجة هذه المشكلة بخلاف إصلاح الكود الذي يجب إصلاحه. إذا تمكنت من العثور على أنماط شائعة ، فيمكنك أتمتة بعض التحرير باستخدام Find/Replace أو SED أو بعض الأدوات الأخرى ، طالما كنت تتفكك النتيجة قبل التحقق منها.

إذا كان هناك الآلاف من الملفات ، أعتقد أن هناك فريقًا معقولًا بحجمه قام ببناء الكود بهذه الطريقة. يبدو من العدل مشاركة عبء العمل بين الأشخاص الذين قاموا ببناء النظام ، بدلاً من تفريغه على شخص واحد. وإلا فإنك سينتهي بك الأمر إلى "SQL Fixing Guy" ولن يكون لدى أي شخص آخر في الفريق أي حافز لكتابة رمز SQL بطريقة أكثر محمولة.

نصائح أخرى

هل يقوم تطبيقك الحالي بتنفيذ SQL من خلال فئة مشتركة؟ هل يمكنك إضافة بعض التسجيل لطباعة SQL الخام في هذه الفئة المشتركة؟ من هذا الإخراج ، يمكنك كتابة نص صغير لتشغيل كل عبارة ضد Oracle.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top