এসকিউএল কোড গঠনের জন্য অ্যালগরিদম


11

আমার একটি সরঞ্জাম প্রয়োজন (বাড়ির ব্যবহারের জন্য) যা এসকিউএল কোড (এসকিউএল সার্ভার / মাইএসকিউএল) ফর্ম্যাট করবে।
এখানে বিভিন্ন তৃতীয় পক্ষের সরঞ্জাম এবং অনলাইন ওয়েব সাইট রয়েছে যা এটি করে তবে আমার এটি ঠিক কীভাবে দরকার তা ঠিক নয়।

সুতরাং আমি আমার নিজের সরঞ্জামটি লিখতে চাই যা আমার প্রয়োজন অনুসারে ফিট করে।

প্রথম প্রশ্নটি কীভাবে এসকিউএল কোডটি ফর্ম্যাট করা উচিত তার কোনও মানক বা কনভেনশন রয়েছে? (যে সরঞ্জামগুলি আমি এটিকে অন্যভাবে ফর্ম্যাট করার চেষ্টা করেছি)

দ্বিতীয় প্রশ্ন, আমি কীভাবে এই কাজের কাছে যেতে পারি? প্রথমে কি এসকিএল ক্যোয়ারিকে গাছের মতো কিছু ডেটা স্ট্রাকচারে রূপান্তর করা উচিত?

উত্তর:


2

... এসকিউএল কোডটি কীভাবে ফর্ম্যাট করা উচিত তার কোনও মানক বা কনভেনশন রয়েছে?

স্ট্যান্ডার্ড, না। কোনও এসকিউএল পার্সারের সম্পর্কিত হিসাবে আপনি একটি সম্পূর্ণ এসকিউএল স্টেটমেন্টটি এক লাইনে রাখতে পারেন।

কনভেনশন, নিশ্চিত যে প্রচুর আছে। আপনি পরিবর্তনকে সর্বাধিক করার চেষ্টা করছেন বা স্থান হ্রাস করবেন কিনা তা এটি নির্ভর করে। আমি উভয় ক্ষেত্রেই এসকিউএল ফর্ম্যাটর লিখেছি।

এসকিউএল স্টেটমেন্টটি কোথায় ভাঙতে হবে তা বলার জন্য আমি নির্দিষ্ট চরিত্রের সংমিশ্রণগুলি ব্যবহার করেছি।

আমি লিখেছি এমন একটি জাভা ডিবি 2 এসকিউএল ফর্ম্যাটারের একটি উদাহরণ এখানে । অন্য জাভা প্রোগ্রাম জাভা কোড উত্পন্ন। এসকিউএল সরাসরি SYSIBMটেবিলগুলি থেকে এসেছিল ।

protected void prepareIndex00Select(String codeFacl)
        throws SQLException {
    StringBuffer sb = new StringBuffer();
    sb.append("SELECT CODE_FACL, SEQ_FACL, FILLER_TOF ");
    sb.append("    , CODE_TOF, NAME_FACL, NAME_LENGTH ");
    sb.append("    , CODE_FMB, ID_NCIC_ORI, NBR_PRINTER_PREFIX ");
    sb.append("    , ID_PERSONNEL_OFC, COMPLEX_CODE ");
    sb.append("    , PHS_CODE, DESIG_FACL_GRP, IND_DESIG_AUTH ");
    sb.append("    , CODE_FACL_I_T, INTKEY_FACL, IND_CDM_SENTENCING ");
    sb.append("    , MAL_FEM_IND, DEL_AFTER, IND_INMATES ");
    sb.append("    , VALUE_SO_CPU_STD, VALUE_SO_CPU_DAY ");
    sb.append("    , CODE_CAT, VALUE_DCN, XIDBKEY ");
    sb.append("    , FACL_FK_REGN ");
    sb.append("  FROM ");
    sb.append(creator);
    sb.append(".FACL ");
    sb.append("  WHERE CODE_FACL = ? ");
    if (additionalSQL != null) sb.append(additionalSQL);

    psIndex00 = connection.prepareStatement(sb.toString());
    psIndex00.setString(1, codeFacl);

}   // End prepareIndex00Select method

আপনার পণ্য (বিন্যাসক) অনলাইনে উপলব্ধ বা ডাউনলোড করার জন্য?

@ জুলিনস: না। আমি জাভা অ্যাপ্লিকেশন লিখতে পারি যা জাভা ক্লাস লেখার পাশাপাশি ডেটাবেস কলাম এবং সূচী সারণী (এসওয়াইএসআইবি) থেকে এসকিউএল তৈরি করতে পারে তা প্রমাণ করার জন্য এটি লিখেছিলাম। দুঃখের বিষয়, আমি কারও সাথে কাজ করি না এটি কার্যকর হিসাবে পাওয়া যায় নি। আমি মনে করি আপনি চাইলে কোডটি কোথাও রেখে দিতে পারলাম।
গিলবার্ট লে ব্ল্যাঙ্ক

আমি এটির প্রশংসা করব, আমি কেবল বিন্যাসের অংশটি দেখতে চাই।
জিলিন্স

@ জুলিনস: আমি এখন কাজ করছি, তাই আমি পাবলিক স্টোরগুলিতে অ্যাক্সেস করতে পারি না। আমি এই সপ্তাহান্তে কোডটি কোথাও রেখে দেব এবং কীভাবে এটি অ্যাক্সেস করবেন তা আপনাকে জানাব।
গিলবার্ট লে ব্ল্যাঙ্ক

কোড সম্পর্কে কি? আপনি এটা কোথাও রাখতে পারেন?
jullins

2

কিছুটা দেরি হয়ে গেছে, কেবল এটিকে পেরেছি, দুঃখিত।

দরিদ্র মানুষের টি-এসকিউএল ফর্ম্যাটারটি একটি ওপেন-সোর্স টি-এসকিউএল ফর্ম্যাটার (লাইব্রেরি, এসএসএমএস প্লাগইন, কমান্ড-লাইন ফাইল ফর্ম্যাটার, ইত্যাদি) - বাস্তবায়ন যথাযথভাবে মডুলার এবং এটি মাইএসকিউএল টোকেনাইজার এবং ফর্ম্যাটর প্রয়োগ করা খুব কঠিন হওয়া উচিত নয় should টি-এসকিউএলগুলির সাথে মেলে (আমি প্রাথমিকভাবে এটি করিনি কারণ আমার এখনই মাইএসকিউএল-এর অভিজ্ঞতা বা ব্যবহার নেই, তাই এটি আমার সময়ের সদ্ব্যবহার নয়)।

লাইব্রেরিটি এজিপিএল লাইসেন্সের সাথে সি # (২.০) এ প্রয়োগ করা হয়েছে - এর অর্থ আপনি এটি বাণিজ্যিকভাবে পুনরায় বিতরণ করতে পারবেন না বা কোনও পরিবর্তন প্রকাশিত না করে পাবলিক সার্ভিস হিসাবে প্রকাশ করতে পারবেন না, তবে অভ্যন্তরীণ ব্যবহারকারীর পক্ষে এটি কোনও বিষয় উপস্থাপন করা উচিত নয়, এটি কাস্টমাইজড হোক বা না হোক না.

@ গিলবার্ট লে ব্ল্যাঙ্ক ইতিমধ্যে উত্তর হিসাবে, এসকিউএল ফর্ম্যাটিংয়ের অবশ্যই কোনও স্ট্যান্ডার্ড নেই - এমনকি সেখানে বাণিজ্যিক ফরম্যাটারগুলি, তাদের দেওয়া বিভিন্ন অপশন সহ একই ডিফল্টে রূপান্তর করবেন না বা অগত্যা একই আউটপুট ফর্ম্যাটগুলিকে সমর্থন করবেন না।

আপনার নিজের সরঞ্জামটি স্ক্র্যাচ থেকে লেখার ক্ষেত্রে, আমি আপনাকে এর বিপরীতে পরামর্শ দেব যদি আপনাকে বিভিন্ন ধরণের কেসগুলি পরিচালনা করতে হয়: কমপক্ষে টি-এসকিউএল-এর জন্য, এসটিকিউ-র মাল্টি-স্টেটমেন্ট ব্যাচগুলি সিটিই সহ, মার্জ স্টেটমেন্টস, সাব-কোয়েরিজ সহ পরিচালনা করে উত্সযুক্ত টেবিলগুলি, ইত্যাদি খুব শক্ত হয়ে উঠেছে :)

ক্ষেত্রে এটি কোন সাহায্যের আছে: http://www.architectshack.com/PoorMansTSqlFormatter.ashx

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.