sql格式化自動識別SQL語法結構

一、安裝包

PoorMansTSqlFormatterLib

二、代碼實現

using Microsoft.AspNetCore.Mvc;
using PoorMansTSqlFormatterLib.Formatters;
using PoorMansTSqlFormatterLib.Parsers;
using PoorMansTSqlFormatterLib.Tokenizers;namespace SaaS.OfficialWebSite.Web.Controllers
{public class SqlFormatController : Controller{public IActionResult Index(){return View();}[HttpPost]public IActionResult FormatSql([FromBody] FormatRequest request){try{var options = new TSqlStandardFormatterOptions{IndentString = request.Options.IndentWithTabs ? "\t" : "    ",SpacesPerTab = 4,MaxLineWidth = 999,KeywordStandardization = request.Options.UppercaseKeywords,TrailingCommas = request.Options.TrailingCommas,SpaceAfterExpandedComma = request.Options.SpaceAfterExpandedComma,ExpandCommaLists = true,ExpandBooleanExpressions = true,ExpandCaseStatements = true,ExpandBetweenConditions = true,ExpandInLists = true,BreakJoinOnSections = true,UppercaseKeywords = request.Options.UppercaseKeywords};var tokenizer = new TSqlStandardTokenizer();var parser = new TSqlStandardParser();var formatter = new TSqlStandardFormatter(options);var tokenized = tokenizer.TokenizeSQL(request.Sql);var parsed = parser.ParseSQL(tokenized);var formattedSql = formatter.FormatSQLTree(parsed);return Ok(new { formattedSql });}catch (Exception ex){return BadRequest(new { error = ex.Message });}}}public class FormatRequest{public string Sql { get; set; }public FormatOptions Options { get; set; }}public class FormatOptions{public bool IndentWithTabs { get; set; }public bool UppercaseKeywords { get; set; }public bool TrailingCommas { get; set; }public bool SpaceAfterExpandedComma { get; set; }}
}

運行效果:SQL 語句格式化

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86254.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86254.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86254.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LVS-DR負載均衡群集深度實踐:高性能架構設計與排障指南

目錄 一、核心原理與理論 二、背景與架構設計 三、全流程部署步驟 1. NFS共享存儲配置(192.168.7.100) 2. Real Server節點配置(四臺服務器) 3. Director服務器配置 四、常見問題解決方案 五、生產環境總結 拓撲示意圖&am…

Hall 定理學習筆記

定義 對于一張二分圖 G ( V , E ) G(V,E) G(V,E),設其左右部點集分別為 V L , V R V_L,V_R VL?,VR?,不妨認為 ( ∣ V L ∣ ≤ ∣ V R ∣ ) (|V_L|\leq |V_R|) (∣VL?∣≤∣VR?∣),定義該二分圖的一組 完備匹配 為左部 ∣ V L ∣ |V…

使用jmeter進行websocket連接測試

一、WebSocket Sampler 插件安裝 下載地址:http://download.csdn.net/detail/easternunbeaten/9753723 下載后,解壓直接拷貝到Jmeter的lib下的ext文件夾里面,重啟Jmeter,Sanpler下多一個Websocket選項 二、WebSocket 取樣器字段介紹 1、W…

網絡安全漏洞掃描是什么?如何識別目標進行掃描?

,現在大家對于網絡安全漏洞掃描那可是相當在意這網絡安全,如今在咱這個大時代里可是相當重要的一個事咧!因為,隨著互聯網蹭蹭地發展,網絡攻擊還有數據泄露這類威脅那真是越來越多越來越大! 咱先來說說啥叫…

NoSQL之Redis配置優化

NoSQL之Redis配置優化 一、Redis1.關系數據庫與非關系型數據庫關系型數據庫非關系型數據庫非關系型數據庫產生背景 2.Redis基礎Redis簡介Redis安裝部署配置參數 3.Redis命令工具redis-cli命令行工具redis-benchmark 測試工具 4.Redis數據庫常用命令key相關命令(1)keys&#xff…

《HTTP權威指南》 第14章 安全HTTP

安全HTTP需要提供的功能: 服務器認證客戶端認證完整性加密效率普適性管理的可擴展性適應性在社會上的可行性 HTTPS HTTPS方案的URL以https://開頭,區別于https://。 HTTPS在HTTP的基礎上使用SSL或者TLS(傳輸層安全)進行加密。 …

Kubernetes、Docker Swarm 與 Nomad 容器編排方案深度對比與選型指導

Kubernetes、Docker Swarm 與 Nomad 容器編排方案深度對比與選型指導 在微服務和云原生時代,容器編排已成為保證應用可用性與擴展性的核心技術。本文將從問題背景出發,深入對比 Kubernetes、Docker Swarm 和 Nomad 三大主流編排方案,分析各自…

c++開源庫項目框架匯總

Webbench Webbench是一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL,測試網站在壓力下工作的性能,最多可以模擬3萬個并發連接去測試網站的負載能力。Webbench使用C語言編寫, 代碼實在太簡潔,源…

【LLaMA-Factory 實戰系列】三、命令行篇 - YAML 配置、高效微調與評估 Qwen2.5-VL

【LLaMA-Factory 實戰系列】三、命令行篇 - YAML 配置、高效微調與評估 Qwen2.5-VL 1. 引言2. 為什么從 WebUI 轉向命令行?3. 準備工作(回顧)4. 核心:創建并理解訓練配置文件4.1 選擇并復制基礎模板4.2 逐一解析與修改配置文件4.3…

3、NLP黃金九步法(問題定義-數據獲取-數據探索)

🎯 為什么要學習NLP流程? 想象一下,你要做一道菜🍳。如果沒有清晰的步驟,隨便把食材扔進鍋里,結果會怎樣?NLP項目也是如此! 就像做菜有固定流程一樣: 買菜 → 洗菜 → …

docker 安裝DM8達夢數據庫

搭建Docker 環境 查看docker 是否安裝 yum list installed | grep docker如若未安裝則安裝docker 環境 yum -y install docker啟動Docker systemctl start docker查看docker啟動結果 systemctl status docker搭建達夢數據庫 下載鏡像 傳送門 #導入鏡像 docker load -i…

Chrome MCP Server:AI驅動瀏覽器自動化測試實戰「喂飯教程」

Chrome MCP Server:AI驅動瀏覽器自動化測試實戰 一、項目簡介二、原理剖析1. 架構總覽三、安裝1. 環境準備2. 安裝步驟2.1 下載 Chrome 擴展2.2 安裝 mcp-chrome-bridge2.3 加載擴展2.4 啟動 MCP Server2.5 配置 AI 客戶端四、Chrome MCP Server API 參考五、用法實戰1. 與 AI…

.NET多線程任務實現的幾種方法及線程等待全面分析

文章目錄 1. 引言2. .NET多線程編程基礎2.1 線程概念回顧2.2 .NET線程模型概述 3. 多線程任務實現方法3.1 Thread類實現3.2 ThreadPool實現3.3 Task Parallel Library (TPL)3.4 Parallel類3.5 BackgroundWorker組件3.6 Async/Await模式3.7 各種方法的比較與選擇 4. 線程等待機制…

Typecho handsome訪客統計插件最新版VistorLoggerPro

文章目錄 介紹功能特點頁面預覽安裝及更新方法系統要求使用說明基本使用(Handsome主題適用) 隱私保護技術實現更新日志最后 介紹 這是一個為 Typecho 博客系統開發的訪客統計插件,基于原版的VistorLogger修改版本。該插件提供了詳細的訪問統…

藍橋杯備賽篇(上) - 參加藍橋杯所需要的基礎能力 1(C++)

目錄 一、(工具)DevC的安裝和使用1.1 DevC介紹1.2 下載1.3 部分使用技巧1.3.1 快捷鍵介紹1.3.2 調試快捷鍵 二、第一個C程序2.1 基礎程序2.2 main函數2.3 字符串2.4 頭文件2.5 cin和cout初識2.6 名字空間 三、注釋四、題目練習3.1 輸出第二個整數3.2 字符…

Bugku-CTF-web(適合初學者)

今天刷了一下 Bugku-CTF-web 的1-10題,比較簡單,比較娛樂,基本上看看源代碼就可以了,非常適合初學者。能夠學習到base64編碼,unicode編碼,dirb web目錄遍歷,SourceLeakHacker 備份文件遍歷&…

【實時Linux實戰系列】基于實時Linux的音頻處理應用開發

在實時系統中,音頻處理應用(如實時音頻效果處理、語音通信等)需要低延遲和高精度的時間控制。實時Linux通過優化內核調度和提供高效的I/O操作,能夠滿足音頻處理對實時性的嚴格要求。掌握基于實時Linux的音頻處理應用開發對于開發者…

Linux中信號的三種產生方式

在 Linux 中,信號(Signal)是一種進程間通信的機制,用于通知進程發生了某種事件。理解信號的來源對于開發可靠、健壯的程序至關重要。本文將介紹三種常見的信號產生方式,包括:kill 命令、鍵盤輸入&#xff0…

Android15啟動icon界面的背景圖顏色

Android15啟動icon界面的背景圖顏色 在一加Ace 5啟動時有個圖標在中間的&#xff0c;它界面的背景圖是灰色的&#xff0c;不好看&#xff0c;想改為白色。 解決方案&#xff1a; 在app下的AndroidManifest.xml文件的<application這個標簽的android:theme增加&#xff1a;…

用福昕閱讀器打開pdf文件,整個程序窗口自動縮小的問題

原因&#xff1a; 這個問題&#xff0c;其實是pdf自帶了某個縮放比例&#xff0c;與窗口的比例不一致&#xff0c;因此會進行窗口縮放。 解決方法: 用acrobat&#xff08;我沒有找到如何用福昕閱讀器進行設置的方法&#xff09;&#xff0c;打開【文檔屬性】&#xff0c;然后打…