§

SQL query களை format செய்யுங்கள்

Dialect வகை
உள்தள்ளல்
Keyword எழுத்து வகை
Clause க்கு முன் வரி முறிவு
§

SQL ஒட்டுங்கள்

§

Format செய்யப்பட்ட SQL

சென்னை மற்றும் திருச்சி data engineering குழுக்கள் PR review cycle களை குறைக்க SQL formatting ஐ பயன்படுத்துகின்றன. ஒரு developer 200-வரி CTE ஐ கைமுறையாக format செய்து வேறொருவர் ஒற்றை வரியாக மாற்றும்போது diff அர்த்தமற்ற whitespace noise ஆகிறது. commit க்கு முன்பு ஒரு consistent formatter இயக்குவது review comments ஐ உண்மையான logic மாற்றங்களில் வைக்கிறது — style கேள்விகளில் அல்ல.

SQL formatting எவ்வாறு வேலை செய்கிறது

SQL formatting என்பது lexer-driven rewrite ஆகும், இது query இல் உள்ள ஒவ்வொரு token ஐயும் நடந்து, தேர்ந்தெடுக்கப்பட்ட dialect இன் விதிகளின்படி அதைச் சுற்றி whitespace மீண்டும் வெளியிடுகிறது. Query semantics ஒருபோதும் மாறாது, layout மட்டுமே.

  1. ஒரு dialect தேர்வு செய்யுங்கள். MySQL backticks, PostgreSQL :: casts, BigQuery dotted table paths, மற்றும் T-SQL square-bracket identifiers ஒவ்வொன்றும் அவை பற்றி தெரிந்த tokenizer தேவைப்படுகின்றன. Dialect selector எந்த grammar பயன்படுத்துவதென்று தேர்வு செய்கிறது.
  2. உள்ளீட்டை tokenize செய்யுங்கள். Formatter query ஐ token stream ஆக பிரிக்கிறது: keywords (SELECT, JOIN), identifiers, literals, operators, parentheses மற்றும் comments. String literals மற்றும் quoted identifiers தொடர்ந்து கடந்து செல்கின்றன, இதனால் dialect-specific syntax வேலை செய்கிறது.
  3. Layout விதிகள் பயன்படுத்துங்கள். Top-level clauses (SELECT, FROM, WHERE, GROUP BY, ORDER BY) தங்கள் சொந்த வரியில் தொடங்குகின்றன. Select list மற்றும் column lists இல் comma-separated expressions ஒவ்வொன்றும் தேர்ந்தெடுக்கப்பட்ட indent unit ஆல் indent செய்யப்பட்டு ஒரு வரி பெறுகின்றன.
  4. Keyword case பயன்படுத்துங்கள். Keyword-case toggle அங்கீகரிக்கப்பட்ட SQL keywords ஐ uppercase, lowercase க்கு மீண்டும் எழுதுகிறது அல்லது உள்ளீட்டு casing ஐ அப்படியே பாதுகாக்கிறது. Identifiers ஒருபோதும் தொட்டிருக்கப்படுவதில்லை — column மற்றும் table பெயர்கள் எழுதப்பட்டவாறு எப்போதும் வருகின்றன.
  5. Format செய்யப்பட்ட சரத்தை வெளியிடுங்கள். Token stream indent character (2 இடைவெளிகள், 4 இடைவெளிகள் அல்லது tab) மற்றும் கட்டமைக்கப்பட்ட linebreak விதியுடன் ஒரே சரமாக சேர்க்கப்படுகிறது. நேரடி பயன்முறை நீங்கள் தட்டச்சு செய்யும்போது 200 ms debounce இல் முழு பைப்லைனையும் மீண்டும் இயக்குகிறது.

SQL ஏன் அழகாக பரிந்துரைக்க வேண்டும்

  • Pull-request diff படிக்க எளிதாக. 200-வரி CTE ஒரு வரியாக மீண்டும் எழுதப்படும்போது code review ஒரு யூகிக்கும் விளையாட்டாக மாறுகிறது. சீரான formatting diff ஐ நீங்கள் உண்மையில் செய்த மாற்றத்திற்கு மட்டும் — ஒரு புதிய column, ஒரு கூடுதல் JOIN, ஒரு மாறுபட்ட WHERE predicate — மட்டுப்படுத்துகிறது, எனவே reviewer whitespace ஐ அவிழ்க்காமல் பார்க்கலாம்.
  • எளிதான debugging. ஒரு query தவறான row count திரும்பும்போது, முதல் செய்கை வரி வரியாக படிப்பது. Format செய்யப்பட்ட SQL ஒவ்வொரு JOIN ஐயும் சொந்த வரியில் வைத்து WHERE predicates ஐ வரிசைப்படுத்துகிறது, எனவே தவறிய AND அல்லது வழிதவறிய OR ஒரு பார்வையில் தெரிகிறது.
  • சீரான குழு style. பெரும்பாலான குழுக்கள் SQL style guide (dbt Labs, GitLab, Mode Analytics எல்லாரும் தங்களுடையதை வெளியிடுகிறார்கள்) ஏற்றுக்கொண்டு ஒவ்வொரு committed query ஐயும் அதை பின்பற்ற விரும்புகிறார்கள். Commit க்கு முன்பு formatter இயக்குவது style வாதத்தை review இலிருந்து அகற்றி logic மட்டும் விவாதிக்க விடுகிறது.
  • Docs இல் SQL பகிர்வு. Runbooks, incident retros மற்றும் Notion docs எல்லாமே மேலிருந்து கீழாக படிக்கும் SQL இலிருந்து பயன்பெறுகின்றன. Format செய்யப்பட்ட SQL fenced code block ஆக சுத்தமாக ஒட்டுகிறது மற்றும் PDF exports இல் keyword நடுவில் ஏற்படும் awkward line wraps இல்லாமல் கணிக்கக்கூடியதாக print ஆகிறது.

பொதுவான பயன்பாடுகள்

SQL formatting analytics engineering, backend development மற்றும் operations வேலை முழுவதும் தோன்றுகிறது, ஒரு query ஐ எழுதாத யாராவது படிக்க வேண்டியிருக்கும்போது.

  • Analytics engineering: dbt project இல் pre-commit hook ஒவ்வொரு model கோப்பையும் மீண்டும் format செய்கிறது, PR diffs logic மாற்றங்களுக்கு மட்டும் மட்டுப்படுகிறது, whitespace churn க்கு அல்ல.
  • Database administration: ஒற்றை-வரி slow-query log entry ஒட்டி, format செய்து, incident retro எழுதும்போது join order வழியாக நடக்கவும்.
  • Documentation: Looker explore அல்லது Tableau workbook இலிருந்து query எடுத்து, runbook க்கு format செய்து, on-call rotation க்கு copy-pasteable எடுத்துக்காட்டாக பொதிக்கவும்.

ஒரு செய்யப்பட்ட எடுத்துக்காட்டு

Dialect PostgreSQL, indent 2 இடைவெளிகள், keyword case UPPER என அமைக்கப்பட்ட input pane இல் SELECT u.id,u.email,COUNT(o.id) FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.created_at > '2024-01-01' GROUP BY u.id,u.email ORDER BY u.id; ஒட்டுங்கள். வெளியீடு SELECT, FROM, LEFT JOIN, WHERE, GROUP BY மற்றும் ORDER BY ஐ சொந்த வரிகளில் வைக்கிறது; select list மற்றும் group-by list இல் உள்ள ஒவ்வொரு column க்கும் சொந்த indented வரி கிடைக்கிறது; மற்றும் ON predicate அது சேர்ந்த JOIN keyword ஐ விட ஒரு indent ஆழமாக அமர்கிறது. BigQuery dialect வழியாக அதே query இந்த case க்கு ஒரே வெளியீட்டை தரும், ஆனால் ஏதேனும் backtick-quoted identifiers இருந்தால் அவற்றை வைத்திருக்கும்.

FAQ

எந்த SQL dialect கள் ஆதரிக்கப்படுகின்றன?

Dialect dropdown Standard SQL, MySQL, PostgreSQL, SQLite, MariaDB, Transact-SQL (SQL Server / Azure SQL), BigQuery, Snowflake மற்றும் Redshift ஐ உள்ளடக்குகிறது. அடிப்படை sql-formatter library DuckDB, Spark SQL, Hive, Trino, Db2, N1QL, PL/SQL, ClickHouse, TiDB மற்றும் SingleStoreDB ஐயும் அங்கீகரிக்கிறது — சரியான இலக்கு பட்டியலில் இல்லாவிட்டாலும் மிகவும் நெருங்கிய dialect தேர்வு செய்வது நியாயமான வெளியீட்டை தரும். Identifiers, string literals மற்றும் dialect-specific operators (PostgreSQL @>, BigQuery SAFE. prefixes) அப்படியே பாதுகாக்கப்படுகின்றன.

இது என் SQL ஐ சரிபார்க்கிறதா?

இல்லை. Formatter ஒரு lexical rewriter, parser அல்ல. இது உள்ளீட்டை tokenize செய்கிறது, layout விதிகள் பயன்படுத்துகிறது, மற்றும் முடிவை வெளியிடுகிறது; query semantically valid ஆகவிருக்கிறதா, referenced tables இருக்கின்றனவா, அல்லது syntax தேர்ந்தெடுத்த dialect இல் சட்டபூர்வமானதா என்று சோதிக்கவில்லை. உண்மையான correctness சோதிப்பிற்கு format செய்யப்பட்ட வெளியீட்டை உண்மையான database இல் (அல்லது SQLFluff போன்ற SQL linter இல்) இயக்கவும்.

என் keywords ஏன் uppercase ஆக்கப்படுகின்றன?

Keyword case dropdown UPPER க்கு default ஆகிறது, இது பெரும்பாலான வெளியிடப்பட்ட SQL style guides (dbt Labs, Mode, GitLab) இல் மரபு. உங்கள் குழு select / from lowercase இல் எழுதினால் lower க்கு மாற்றவும், அல்லது நீங்கள் தட்டச்சு செய்த எந்த casing ஐயும் வெளியீடு பாதுகாக்க விரும்பினால் Preserve க்கு. Identifiers ஒருபோதும் பாதிக்கப்படுவதில்லை — அங்கீகரிக்கப்பட்ட keyword set மட்டுமே மீண்டும் எழுதப்படுகிறது.

என் query எங்காவது பதிவேற்றப்படுகிறதா?

இல்லை. Vendored sql-formatter library உங்கள் உலாவியில் இயங்குகிறது, formatting உங்கள் கணினியில் உள்ளூரில் நடக்கிறது, மற்றும் query உரை நெட்வொர்க் கடப்பதில்லை. இந்த பக்கம் செய்யும் ஒரே outbound requests tools.ultim8soft.com இல் உள்ள ஒவ்வொரு பக்கமும் செய்யும் analytics மற்றும் ads requests தான்; SQL உரை அதில் எதுவின் பகுதியாகவும் இல்லை.

Format செய்யப்பட்ட SQL ஒரு formatter அதை கையாளும்போது style வாதமாக இருப்பதை நிறுத்துகிறது. கருவி முழுவதும் உங்கள் உலாவியில் இயங்குகிறது, query பக்கத்தை விட்டு வெளியேறுவதில்லை, மற்றும் sql-formatter npm package ஐ இயக்கும் அதே dialect-aware tokenizer rewrite செய்கிறது.