SQL ফরম্যাটার
ফরম্যাটsql-formatter দিয়ে অনেক উপভাষার (MySQL, PostgreSQL, T-SQL ইত্যাদি) SQL ফরম্যাট বা মিনিফাই করুন।
এই পৃষ্ঠায়
SQL ফরম্যাটার কী?#
একটি SQL ফরম্যাটার এমন একটি কোয়েরিকে — প্রায়শই এক সারিতে ঠাসা, বা একটি লগ থেকে এলোমেলো ইনডেন্টেশন সহ পেস্ট করা — যা ইঞ্জিনের জন্য লেখা হয়েছিল, তাকে মানুষের জন্য লেখা একটি কোয়েরিতে রূপান্তর করে। কীওয়ার্ডগুলো তাদের নিজস্ব লাইনে যায়, কলামগুলো সারিবদ্ধ হয়, সাবকোয়েরিগুলো এক স্তরে প্রবেশ করে, এবং পাঁচটি AND শর্ত সহ একটি WHERE ক্লজ আর টেক্সটের দেয়াল থাকে না। উল্টো অপারেশনটি, মিনিফাইং, সব হোয়াইটস্পেসকে আবার একটি একক সারিতে সংকুচিত করে যখন একটি কোয়েরিকে একটি কনফিগ ফাইল বা একটি API প্যারামিটারের মাধ্যমে চলাচল করতে হয়।
SQL ফরম্যাটিংকে ঝুঁকিপূর্ণ করে তোলে এই যে প্রতিটি ডেটাবেসের নিজস্ব উপভাষা আছে। RETURNING সহ একটি Postgres কোয়েরি, ব্যাকটিক-উদ্ধৃত আইডেন্টিফায়ার সহ একটি MySQL কোয়েরি, TOP (n) সহ একটি SQL Server কোয়েরি, এবং স্ট্রাক্ট ও অ্যারে লিটারাল সহ একটি BigQuery কোয়েরি সবাই ভিন্নভাবে দেখায়, এবং একটি ফরম্যাটার যা ভান করে যে একটি সার্বজনীন SQL আছে তা edge case-গুলোতে সূক্ষ্মভাবে ভুল করবে। এই পৃষ্ঠাটি sql-formatter স্পষ্ট উপভাষা নির্বাচন সহ ব্যবহার করে তা সামলায়: মানক SQL, MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2 এবং Trino। আপনি যেটি আপনার ডেটাবেস আসলে বলে সেটি বেছে নিন, এবং ফরম্যাটার সেই অনুযায়ী পার্স করে।
ব্যবহারবিধি#
- বাঁদিকের SQL পেইনে আপনার কোয়েরি পেস্ট করুন, বা একটি ছোট উদাহরণ লোড করতে নমুনা ক্লিক করুন।
- টুলবারে একটি উপভাষা বেছে নিন — আপনার ডেটাবেসের উপভাষা। ডিফল্ট
sqlএকটি নিরাপদ সাধারণ ফ্লেভার; কোয়েরিটি যখন উপভাষা-নির্দিষ্ট সিনট্যাক্স ব্যবহার করে তখনpostgresql,mysql,tsqlইত্যাদিতে স্যুইচ করুন। - একটি ইন্ডেন্ট বেছে নিন: ২, ৪, বা ট্যাব। চারটি স্পেস SQL-এর জন্য সাধারণ কারণ এটি দীর্ঘ কলাম তালিকাকে পঠনযোগ্য রাখে।
- একটি ক্রিয়া ক্লিক করুন:
- ফরম্যাট — পুনরায় ইনডেন্ট, কোয়েরিকে যৌক্তিক লাইনে ভাঙুন, এবং ডিফল্টভাবে কীওয়ার্ডগুলো বড় হাতে করুন যাতে
SELECT,FROMএবংWHEREআইডেন্টিফায়ার থেকে আলাদা হয়ে যায়। - মিনিফাই —
--লাইন মন্তব্য এবং/* */ব্লক মন্তব্য ছিনিয়ে নিন, তারপর হোয়াইটস্পেসের প্রতিটি রানকে একটি একক স্পেসে সংকুচিত করুন। নিউলাইনগুলো স্পেস হয়ে যায়, যা SQL-এর জন্য নিরাপদ কারণ স্টেটমেন্টগুলো একটি নিউলাইনে নয়, একটি সেমিকোলনে শেষ হয়।
- ফরম্যাট — পুনরায় ইনডেন্ট, কোয়েরিকে যৌক্তিক লাইনে ভাঙুন, এবং ডিফল্টভাবে কীওয়ার্ডগুলো বড় হাতে করুন যাতে
- আউটপুট পেইনে ফলাফল পড়ুন। এটি নিতে কপি ব্যবহার করুন; মুছুন উভয় পেইন রিসেট করে।
মূল বৈশিষ্ট্য#
- বারোটি উপভাষা। MySQL, MariaDB, PostgreSQL, SQLite, T-SQL, PL/SQL, BigQuery, Redshift, Snowflake, DB2, Trino, এবং সাধারণ মানক SQL। ফরম্যাটারের ব্যাকরণ ম্যাচ করতে পরিবর্তিত হয়, তাই উপভাষা-নির্দিষ্ট কীওয়ার্ডগুলো সঠিকভাবে অবস্থান করে।
- কীওয়ার্ড কেসিং। ফরম্যাট ডিফল্টভাবে কীওয়ার্ডগুলো বড় হাতে করে (তাই
selectহয়ে যায়SELECT) এবং আপনার আইডেন্টিফায়ারগুলো একা রাখে। এটি সম্পূর্ণভাবে প্রসাধনমূলক এবং কখনো কোয়েরি যা করে তা পরিবর্তন করে না। - নিরাপদ মিনিফাই। হোয়াইটস্পেস একক স্পেসে সংকুচিত হয়; SQL সেমিকোলন-সমাপ্ত, তাই লাইন যোগ করা দুটি স্টেটমেন্টকে একত্রিত করতে পারে না যেভাবে নিউলাইন-সংবেদনশীল ভাষায় পারে।
- মিনিফাইতে মন্তব্য ছিনিয়ে নেওয়া। আপনি মিনিফাই করলে উভয়
--এবং/* */মন্তব্য সরানো হয়, পেলোডটি শক্ত রাখে। - দুই-পেইন, কপি-প্রস্তুত, সম্পূর্ণভাবে ক্লায়েন্ট-সাইড। ফরম্যাটার আপনার ব্রাউজারে চলে; কোয়েরিটি কোথাও পাঠানো হয় না।
ব্যবহারিক উদাহরণ#
একটি রিপোর্টিং কোয়েরি এক সারিতে ডাম্প করা, একটি মন্তব্য, একটি join, এবং একটি GROUP BY সহ:
ইনপুট:
select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc
উপভাষা হিসেবে postgresql বেছে নিন, তারপর ২ স্পেস সহ ফরম্যাট ক্লিক করুন:
SELECT
u.id,
u.name,
count(o.id) AS orders
FROM
users u
JOIN orders o ON o.user_id = u.id
WHERE
u.status = 'active'
AND o.created_at >= '2026-01-01'
GROUP BY
u.id,
u.name
ORDER BY
orders DESC
প্রতিটি ক্লজের এখন নিজস্ব লাইন আছে, join শর্তটি দৃশ্যমান, এবং দুটি WHERE প্রেডিকেট বিভক্ত যাতে আপনি এক নজরে বলতে পারেন যে তারিখ ফিল্টারটি >=, > নয়। কীওয়ার্ড কেসিং বড় হাতে চলে গেছে যখন কলামের নামগুলো হুবহু যেমন লেখা হয়েছিল তেমনই ছিল। একই ইনপুটে মিনিফাই ক্লিক করুন এবং আপনি এক-সারির ফর্মটি ফিরে পাবেন, একটি কনফিগ বা একটি ?query= প্যারামিটারে পেস্ট করার জন্য প্রস্তুত:
select u.id,u.name,count(o.id) as orders from users u join orders o on o.user_id=u.id where u.status='active' and o.created_at >= '2026-01-01' group by u.id,u.name order by orders desc
প্রশ্নোত্তর#
আমার কোন উপভাষা বেছে নেওয়া উচিত?#
আপনার ডেটাবেসের সাথে মিলান। আপনি অনিশ্চিত হলে, সাধারণ sql একটি যাযাবর শুরুর পয়েন্ট এবং সাধারণ ক্লজগুলো সঠিকভাবে সামলায়। কোয়েরিটি যখন এমন সিনট্যাক্স ব্যবহার করে যা সাধারণ ব্যাকরণ প্রত্যাশা করে না তখন নির্দিষ্ট উপভাষায় স্যুইচ করুন — RETURNING (Postgres), ব্যাকটিক আইডেন্টিফায়ার (MySQL), TOP (n) (T-SQL), বা স্ট্রাক্ট/অ্যারে লিটারাল (BigQuery)। ভুল উপভাষা বেছে নিলেও সাধারণত ফরম্যাট হয়, কিন্তু একটি বিরল কীওয়ার্ড ভুল জায়গায় রাখতে পারে।
ফরম্যাট কেন কীওয়ার্ডগুলো বড় হাতে করে কিন্তু আমার কলামের নামগুলো নয়?#
কারণ কীওয়ার্ডগুলো বড় হাতে করা একটি পঠনযোগ্যতা রীতি যা কখনো অর্থ পরিবর্তন করে না — SELECT এবং select ইঞ্জিনের কাছে অভিন্ন — যখন আপনার আইডেন্টিফায়ারগুলো কেস-সংবেদনশীল হতে পারে (Postgres উদ্ধৃতিবিহীন আইডেন্টিফায়ারগুলোকে ছোট হাতে ভাঁজ করে; MySQL কিছু প্ল্যাটফর্মে কেস-সংবেদনশীল)। আইডেন্টিফায়ারগুলো একা রাখাই নিরাপদ ডিফল্ট। আপনি যদি ছোট হাতের কীওয়ার্ড পছন্দ করেন, কোয়েরিটি ফরম্যাট করুন এবং তারপর একটি ম্যানুয়াল পাস করুন।
মিনিফাই কি মাল্টি-স্টেটমেন্ট স্ক্রিপ্ট সংরক্ষণ করে?#
এটি হোয়াইটস্পেসের প্রতিটি রানকে একটি একক স্পেসে সংকুচিত করে, নিউলাইন সহ, কিন্তু এটি সেমিকোলনগুলো ঠিক যেখানে ছিল সেখানে রাখে। তাই SELECT 1; SELECT 2; দুটি স্টেটমেন্ট হিসেবে ; দ্বারা বিভাজিত থাকে। তা সত্ত্বেও, অনেক স্টেটমেন্ট সহ একটি দীর্ঘ মাইগ্রেশন স্ক্রিপ্টের জন্য, একটি একক-সারির মিনিফাইড ফর্ম পড়তে কঠিন এবং ডিবাগ করতে কঠিন — মিনিফাই একটি একক কোয়েরি বা একটি ছোট ব্যাচের জন্য উপযুক্ত।
আমার কোয়েরি কি কোথাও আপলোড হয়?#
না। ফরম্যাটার পৃষ্ঠায় বান্ডল করা এবং আপনার ব্রাউজারে স্থানীয়ভাবে চলে। আপনার SQL সম্পর্কে কিছুই — টেবিলের নাম নয়, লিটারাল নয় — ট্যাব ছাড়ে না।