মিনিফাইড SQL কোয়েরি পেস্ট করুন এবং পাঠযোগ্য, ইন্ডেন্টেড আউটপুট পান। ডায়ালেক্ট, ইন্ডেন্ট প্রস্থ এবং কীওয়ার্ড কেস বেছে নিন; সবকিছু আপনার ব্রাউজারে স্থানীয়ভাবে চলে।
SQL-এর দেওয়ালকে আবার পাঠযোগ্য করুন। একটি কোয়েরি পেস্ট করুন—এক লাইন বা হাজার—এবং টাইপ করার সাথে সাথে এটি পুনর্বিন্যাস হয়। ডায়ালেক্ট বেছে নিন যাতে ডায়ালেক্ট-নির্দিষ্ট সিনট্যাক্স বিকৃত না হয়, তারপর আপনার দল যে ইন্ডেন্টেশন ও কীওয়ার্ড কেস ব্যবহার করে তা বেছে নিন।
SQL ফরম্যাটিং লাইব্রেরি লোড হতে ব্যর্থ হয়েছে। অনুগ্রহ করে পেজটি রিলোড করুন।
অন্য মানুষদের পড়তে হয় এমন SQL ফরম্যাট করা
ডায়ালেক্ট সিলেক্টর কেন গুরুত্বপূর্ণ
SQL মানের ব্যাপারটি মোটামুটি সেই অর্থে যেভাবে ইংরেজি বানান একটি মান। প্রতিটি ইঞ্জিন সাধারণ মূল অংশ বাস্তবায়ন করে এবং তারপর এমন সিনট্যাক্স যোগ করে যা অন্য কারো নেই, আর যে ফরম্যাটার জানে না আপনি কোন ইঞ্জিন লক্ষ্য করছেন সে সেই সিনট্যাক্স ভুলভাবে পার্স করবে বা নীরবে অপরিবর্তিত পাস করিয়ে দেবে।
পার্থক্যগুলি অস্বাভাবিক নয়। শুধু আইডেন্টিফায়ার কোটিং দিয়েই মাঠ ভাগ হয়ে যায়: MySQL ব্যাকটিক ব্যবহার করে, PostgreSQL ও স্ট্যান্ডার্ড SQL ডাবল কোট ব্যবহার করে, আর SQL Server বর্গাকার বন্ধনী ব্যবহার করে। যে ফরম্যাটার ভুল রীতি ধরে নেয় সে কোটেড আইডেন্টিফায়ারকে স্ট্রিং লিটারেল মনে করে অস্তিত্বহীন সীমানায় কোয়েরি পুনঃপ্রবাহিত করতে পারে। কোটিংয়ের বাইরেও আছে LIMIT বনাম TOP বনাম FETCH FIRST, PostgreSQL-এর :: কাস্ট অপারেটর, @ দিয়ে শুরু হওয়া T-SQL ভেরিয়েবল, BigQuery-র ব্যাকটিক-মোড়ানো প্রজেক্ট পাথ এবং Snowflake-এর QUALIFY ক্লজ। সঠিক ডায়ালেক্ট বেছে নেওয়াই সেগুলো অক্ষত রাখে।
ইন্ডেন্টেশন একটি ডিফ-সিদ্ধান্ত
ইন্ডেন্ট প্রস্থ ও কীওয়ার্ড কেস নান্দনিক দেখায়, কিন্তু সেগুলো নির্ধারণ করে আপনার ভার্সন কন্ট্রোল ইতিহাস কেমন দেখায়। ফরম্যাটিং তখনই কাজে লাগে যখন এটি ধারাবাহিক, কারণ দুজন মানুষ একই ফাইল ভিন্নভাবে ফরম্যাট করার মুহূর্তে, প্রতিটি কমিটে অপ্রাসঙ্গিক হোয়াইটস্পেস পরিবর্তনের ঢেউ আসে এবং কোড রিভিউ কাজ করা বন্ধ করে দেয়। একটি কনফিগারেশন বেছে নিন, রিপোজিটরিতে লিখুন, আর যান্ত্রিকভাবে প্রয়োগ করুন।
বড় হাতের কীওয়ার্ড সবচেয়ে প্রচলিত রীতি এবং ঘন কোয়েরি পড়ার সময় সাহায্য করে, কারণ কাঠামোগত শব্দগুলো আপনার টেবিল ও কলামের নাম থেকে দৃশ্যত আলাদা হয়ে যায়। ছোট হাতের কোডবেসে জায়গা পেয়েছে যারা SQL-কে সাধারণ কোড মনে করে এবং চিৎকার পছন্দ করে না। Preserve তখনই সঠিক পছন্দ যখন আপনি অন্যের কোয়েরি ফরম্যাট করছেন এবং তাদের টেক্সটের একটি অক্ষরও স্পর্শ না করে শুধু লেআউট বদলাতে চান, যার ফলে ডিফটি সম্পূর্ণ কাঠামোগত থাকে।
ট্যাব বনাম স্পেস নিয়ে স্বাভাবিক তর্ক আছে, সাথে একটি SQL-নির্দিষ্ট জটিলতা: কোয়েরি প্রায়ই টার্মিনাল, টিকেট সিস্টেম এবং চ্যাট ক্লায়েন্টে পেস্ট হয় যেখানে ট্যাব আট কলামে রেন্ডার হয়। ট্যাবে ইন্ডেন্ট করা গভীর-নেস্টেড কোয়েরি ঠিক সেই জায়গাগুলোতেই অপাঠ্যভাবে মোড় নিতে পারে যেখানে আপনি সবচেয়ে বেশি শেয়ার করার সম্ভাবনা রাখেন।
ফরম্যাটার যা করবে না
ফরম্যাটিং সম্পূর্ণ উপস্থাপনামূলক। এটি কোয়েরিকে দ্রুত করবে না, আর অপটিমাইজার যে প্ল্যান তৈরি করে তাতেও কিছু বদলায় না। একটি সুন্দর ইন্ডেন্ট করা সম্পর্কযুক্ত সাবকোয়েরি এখনও প্রতি সারিতে একবার চলে। পারফরম্যান্সের কাজে EXPLAIN ব্যবহার করুন; পাঠযোগ্যতার জন্য ফরম্যাটার ব্যবহার করুন।
এটি যাচাইও করে না। এই টুল পাঠ্য পুনঃপ্রবাহিত করার মতো যথেষ্ট পার্স করে, কিন্তু এটি ইঞ্জিনের পার্সার নয় এবং ভুল বানান করা কলাম বা অনুপস্থিত জয়েন শর্তসহ কোয়েরিও আনন্দের সাথে ফরম্যাট করবে। পরিষ্কার ফরম্যাট সিনট্যাক্স চেক নয়, আর কোয়েরি বৈধ কিনা তার একমাত্র কর্তৃপক্ষ সেই ডাটাবেস যেটিতে আপনি চালাতে চান।
ফরম্যাটিংয়ের পাশাপাশি গ্রহণযোগ্য একটি অভ্যাস হলো প্যারামিটারাইজেশন। স্ট্রিংয়ে মান যুক্ত করে কোয়েরি ফরম্যাট করা ইনজেকশন ঝুঁকিকে বেশি পাঠযোগ্য করে, কম বাস্তব নয়। আপনি যদি এমন SQL ফরম্যাট করতে দেখেন যাতে ইউজার ইনপুট সরাসরি টেক্সটে ঢোকানো, তাহলে ফরম্যাটিংই প্রথমে ঠিক করার মতো সমস্যা নয়।
সচরাচর জিজ্ঞাসিত প্রশ্ন
কোন SQL ডায়ালেক্ট সমর্থিত?
চৌদ্দটি: স্ট্যান্ডার্ড SQL, MySQL, MariaDB, PostgreSQL, SQLite, SQL Server T-SQL, Oracle PL/SQL, IBM Db2, BigQuery, Snowflake, Redshift, Hive, Spark SQL এবং Trino। সঠিকটি বেছে নিলে আইডেন্টিফায়ার কোটিং এবং কাস্ট অপারেটরের মতো ডায়ালেক্ট-নির্দিষ্ট সিনট্যাক্স সংরক্ষিত হয়।
ফরম্যাটিং কি আমার কোয়েরির কাজ বদলায়?
না। কেবল হোয়াইটস্পেস, লাইন ব্রেক এবং কীওয়ার্ড কেস বদলায়, তাই স্টেটমেন্টটি শব্দার্থগতভাবে অভিন্ন থাকে। মনে রাখবেন, SQL কীওয়ার্ড কেস-সংবেদনশীল নয় বলে কেস বদলানো নিরাপদ; আপনার আইডেন্টিফায়ার ও স্ট্রিং লিটারেল কখনই পুনরায়-কেস হয় না।
এটি কি আমার কোয়েরি দ্রুত চালাবে?
না। ফরম্যাটিং উপস্থাপনামূলক এবং অপটিমাইজার যেভাবেই হোক একই স্টেটমেন্ট দেখে। পারফরম্যান্সের জন্য আপনার প্রকৃত ডাটাবেসে EXPLAIN বা EXPLAIN ANALYZE চালান এবং প্ল্যানটি দেখুন।
আমার SQL কি সার্ভারে পাঠানো হয়?
না। sql-formatter সম্পূর্ণ আপনার ব্রাউজারে চলে এবং কিছুই প্রেরণ করা হয় না। এখানে এটি গুরুত্বপূর্ণ কারণ প্রকৃত কোয়েরিতে প্রায়ই টেবিলের নাম, স্কিমার বিবরণ এবং কখনও কখনও প্রোডাকশন থেকে আক্ষরিক মান এমবেড থাকে।
আমার কোয়েরি ফরম্যাট করতে ব্যর্থ হয় কেন?
সাধারণত ভারসাম্যহীন কোট বা বন্ধনী, অথবা ভুল ডায়ালেক্টের অধীনে পার্স করা ডায়ালেক্ট-নির্দিষ্ট সিনট্যাক্স। আগে আপনার ডাটাবেসের সাথে মিলিয়ে ডায়ালেক্ট সিলেক্টর বদলান; তবুও ব্যর্থ হলে বন্ধ না হওয়া স্ট্রিং লিটারেল খুঁজুন।
ট্যাব নাকি স্পেস ব্যবহার করব?
যেকোনোটি, যতক্ষণ পুরো দল একইটি ব্যবহার করে। স্পেস সব জায়গায় অভিন্ন রেন্ডার হয়, যা কোয়েরি টার্মিনাল, টিকেট বা চ্যাটে পেস্ট হলে সাহায্য করে; ট্যাব প্রতিটি পাঠককে এডিটরে নিজের প্রস্থ বেছে নিতে দেয়।