中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

代碼改變世界

SQLcl:不僅是 SQL*Plus 的繼(ji)任者(zhe),更是 AI 時代的連接(jie)器

2025-07-25 08:31  AlfredZhao  閱讀(920)  評論(1)    收藏  舉報

在 Oracle 數據庫的世界里,SQL*Plus 是開發和管理工(gong)作的(de)標配工(gong)具(ju)。但隨著數(shu)據(ju)庫技術的(de)演進和 AI 能(neng)力的(de)嵌入,傳(chuan)統工(gong)具(ju)已無法滿足(zu)現代數(shu)據(ju)開發、智能(neng)交互(hu)和自動化運維的(de)需求。

Oracle 官方推出的現代化命令行工具 SQLcl(SQL Command Line) 正在取代 SQL*Plus,成為新時代的標準接口,特別是在 AI 與數據庫深度融合的背景下,它是目前 唯一原生支持 MCP(Model Context Protocol) 的 CLI 工具。


一、SQL*Plus 的功成身退

SQL*Plus 陪(pei)伴 DBA 和開發者幾十年,以其穩(wen)定(ding)和簡潔而聞名,但也暴露出(chu)諸(zhu)多局(ju)限(xian):

  • ? 無命令歷史、無自動補全
  • ? 交互體驗落后,難以支持現代開發
  • ? 無法格式化 SQL,無語法高亮
  • ? 輸出格式有限,不支持 JSON、CSV 等
  • ? 無法與 AI 模型協同工作

隨著 Oracle 進入 23ai 時代,這(zhe)些缺陷愈(yu)發明顯。

而且細心的你可能已經發(fa)現,現在(zai)Oracle數(shu)據(ju)庫安裝完(wan)成后(hou),其實SQLcl工(gong)具(ju)也已經默認安裝了(le)。


二、SQLcl:為現代數據庫工作者而生

SQLcl 是 Oracle 官方提供的現代化 SQL 命令行工具,兼容 SQL*Plus 的全部命令,同時引入(ru)了(le)豐富的現代特性,需要(yao)注意的是(shi)(shi),SQLcl工(gong)具并非最近(jin)才推出,但最近(jin)火起(qi)來(lai),真正成為(wei) AI 與數據庫交(jiao)互(hu)的重(zhong)要(yao)接口工(gong)具,是(shi)(shi)因為(wei)其對 MCP(Model Context Protocol) 的支持,至此 SQLcl 邁入(ru)了(le)智能化新階段(當(dang)前最新為(wei)25.2版本(ben))。

關鍵功能一覽

功能 SQL*Plus SQLcl
SQL 格式化(format ? ?
命令歷史、多行編輯 ? ?
SQL 高亮 ? ?
輸出格式(JSON/CSV/XML) ? ?(set sqlformat
支持 JavaScript 腳本 ? ?
內建 Liquibase 支持 ? ?
與 MCP 集成,調用 AI 模型 ? ?

示例:啟動更簡單

# 過去(SQL*Plus)
sqlplus / as sysdba

# 現在(SQLcl)
sql / as sysdba

曾經那個調侃入門級DBA,敲完 sqlplus / as sysdba 然后不會了的笑話,如今也可以改成敲完 sql / as sysdba 然后不會了..

嗯,其實還可以敲個help看看豐富的幫助指引 _

可(ke)以(yi)看到(dao)SQLcl的功能(neng)實在是太(tai)多了,舉例一個(ge)輸出格式的細節示例:

--默認格式,我們直接查詢某張表數據:
SQL> select * from countries fetch first 2 rows only;

COUNTRY_ID CO COUNTRY_NAME                             COUNTRY_SUBREGION              COUNTRY_SUBREGION_ID COUNTRY_REGION       COUNTRY_REGION_ID COUNTRY_TOTA COUNTRY_TOTAL_ID
---------- -- ---------------------------------------- ------------------------------ -------------------- -------------------- ----------------- ------------ ----------------
     52790 US 美國                                       北美洲                                           52797 美洲                               52801 世界匯總                    52806
     52776 DE 德國                                       西歐                                            52799 歐洲                               52803 世界匯總                    52806

--通過設置可以支持csv格式,效果如下:
SQL> set sqlformat csv
SQL> select * from countries fetch first 2 rows only;
"COUNTRY_ID","COUNTRY_ISO_CODE","COUNTRY_NAME","COUNTRY_SUBREGION","COUNTRY_SUBREGION_ID","COUNTRY_REGION","COUNTRY_REGION_ID","COUNTRY_TOTAL","COUNTRY_TOTAL_ID"
52790,"US","美國","北美洲",52797,"美洲",52801,"世界匯總",52806
52776,"DE","德國","西歐",52799,"歐洲",52803,"世界匯總",52806

--通過設置可以支持json格式,效果如下:
SQL> set sqlformat json
SQL> select * from countries fetch first 2 rows only;
{"results":[{"columns":[{"name":"COUNTRY_ID","type":"NUMBER"},{"name":"COUNTRY_ISO_CODE","type":"CHAR"},{"name":"COUNTRY_NAME","type":"VARCHAR2"},{"name":"COUNTRY_SUBREGION","type":"VARCHAR2"},{"name":"COUNTRY_SUBREGION_ID","type":"NUMBER"},{"name":"COUNTRY_REGION","type":"VARCHAR2"},{"name":"COUNTRY_REGION_ID","type":"NUMBER"},{"name":"COUNTRY_TOTAL","type":"VARCHAR2"},{"name":"COUNTRY_TOTAL_ID","type":"NUMBER"}],"items":
[
{"country_id":52790,"country_iso_code":"US","country_name":"美國","country_subregion":"北美洲","country_subregion_id":52797,"country_region":"美洲","country_region_id":52801,"country_total":"世界匯總","country_total_id":52806}
,{"country_id":52776,"country_iso_code":"DE","country_name":"德國","country_subregion":"西歐","country_subregion_id":52799,"country_region":"歐洲","country_region_id":52803,"country_total":"世界匯總","country_total_id":52806}
]}]}

--還有更多輸出格式可以使用 help set sqlformat 來查看,按需使用

三、讓 SQLcl 說“人話”:MCP Server 引領自然語言交互

如果說(shuo)上面的這些功能沒(mei)能打動你,那么(me) Oracle SQLcl 的 MCP Server 為與 Oracle 數(shu)據庫的交互方式帶來重大革新,支持直接(jie)通(tong)過 AI 應用實現自然語言操作(zuo)。

是的,借助(zhu) MCP Server,你可以用自然語言對話方式直接(jie)查詢Oracle數據、生成(cheng)報表并執行數據庫操作,大(da)幅提升效率與易用性。

目前,SQLcl MCP Server 提供(gong)如下工(gong)具:

  • list-connections:自動發現并列出你電腦上保存的所有 Oracle 數據庫連接。
  • connect:連接到你指定的數據庫連接名稱。
  • disconnect:斷開當前正在使用的 Oracle 數據庫連接。
  • run-sql:在已連接的數據庫上執行標準 SQL 查詢和 PL/SQL 代碼塊。
  • run-sqlcl:執行 SQLcl 的專屬命令和擴展功能。

另外值得(de)我們(men)注意(yi)的是,Oracle基于(yu)現有的SQLcl工具,增強開發MCP功能(neng),而(er)不是另起爐灶,這(zhe)是Oracle比較獨特的地(di)方(fang),算是一個關鍵決策(ce)。

這(zhe)種復用(yong)已有(you) CLI 工具的技(ji)術路徑,體(ti)現(xian)了(le)其(qi)工程(cheng)上的務實與產(chan)品一(yi)致(zhi)性思維(wei)。不(bu)僅(jin)保護(hu)了(le)已有(you)投資,還(huan)能(neng)快速將 AI 交(jiao)互能(neng)力帶入 Oracle 開發者熟悉的工作流(liu)中,這(zhe)是目前其(qi)他主流(liu)數(shu)據庫廠商尚未采用(yong)的路徑。

下面來看我們具體該如何快速體驗用起來?

SQLcl需要注意的就(jiu)是版本要在(zai)25.2以上,運行需要依賴JDK環境。

我這里是在mac筆(bi)記(ji)本上直接(jie)安裝(zhuang)的SQLcl,直接(jie)使用brew安裝(zhuang):

brew install sqlcl

起初(chu)我安裝的版本(ben)是25.2.0,可還沒來及測試(shi)就被其(qi)他事情耽(dan)誤了。

alfredzhao@alfredzhaodeMacBook-Air ~ % sql -V
SQLcl:發行版 25.2.0.0 Production 工作版本:25.2.0.184.2054

等想起來(lai)繼續(xu)測(ce)試時,聽同事說最開始的(de)版本(ben)(ben)有些(xie)小問題,所以干脆就把之前(qian)的(de)版本(ben)(ben)直(zhi)接升(sheng)級到(dao)最新25.2.2,避免重復(fu)踩坑浪費時間(jian):

brew upgrade sqlcl

按提示(shi)在mac配置新(xin)的環境變量:vi ~/.zprofile

export PATH=/opt/homebrew/Caskroom/sqlcl/25.2.2.199.0918/sqlcl/bin:"$PATH"

升級后是這個版本:

alfredzhao@alfredzhaodeMacBook-Air ~ % sql -V
SQLcl:發行版 25.2.2.0 Production 工作版本:25.2.2.199.0918

配置數據庫(ku)連接,可以(yi)配置多個連接,在(zai)國外同(tong)事(shi)講的(de)這(zhe)張(zhang)片子中(zhong),可以(yi)看到配置非(fei)常靈(ling)活(huo):

這(zhe)些(xie)配置都是存在你SQLcl的本地電(dian)腦中的,保證了安全性。而且建議不要上來就給高(gao)權(quan)限(xian)用(yong)戶(hu),避免泄(xie)露敏(min)感數(shu)據(ju)(ju),比如(ru)我這(zhe)里只(zhi)配置了兩個測試數(shu)據(ju)(ju)的連接(jie)信息(xi),保證不會(hui)讀取(qu)到關鍵敏(min)感數(shu)據(ju)(ju)。

測試啟動mcp server:

接下(xia)來(lai)就看(kan)MCP Server具體如何(he)在(zai)其他工(gong)具中配置和(he)使用?

我們選擇在 VSCode 中配(pei)置 Cline來演(yan)示。

為(wei)(wei)什么選擇這種方(fang)式?因為(wei)(wei)這個最流行且最簡單,可以(yi)直(zhi)接按(an)照下面這個SQLcl的官方(fang)手冊,一步(bu)步(bu)操作(zuo)即可完(wan)成(cheng):

文檔中詳細描述了如何在VSCode中下載安裝Cline插件:

如何配置好SQLcl的路徑,注意因為我這里升級過SQLcl版本,需要重新修改:

修改為新版本的SQLcl路徑:

起(qi)初我(wo)deepseek欠費了,所以臨時(shi)用(yong)openai兼容的(de)(de)一個(ge)免(mian)費模型(xing)(xing),但總是有問(wen)題,后來(lai)干脆充值換(huan)回deepseek來(lai)試(shi)(shi),這個(ge)deepseek是直接在模型(xing)(xing)配置列表中存在可以選擇的(de)(de),測試(shi)(shi)起(qi)來(lai)就非常順(shun)利(li)。

這里先(xian)測試一個簡單的業務(wu)問(wen)題(ti)“今年主(zhu)要(yao)產品銷(xiao)售情況”,看(kan)下表現如何:

使用(yong)自然語言(yan)(yan)提問,最終它也直接使用(yong)自然語言(yan)(yan)返回答復,體驗還挺好(hao)的。

當我再次提問相同問題,看它在(zai)這種(zhong)情況下是(shi)如(ru)何反應的(de)?

結果它非(fei)常聰明(ming)的識別到(dao)是相同問題,猜我(wo)是想獲(huo)取更多(duo)維(wei)度的信息,還直接給我(wo)提供了一些維(wei)度選擇,非(fei)常貼心(xin)!

當我選擇按季度匯總時,就進一步得到了想要的業務結果:

我這里是構建的測試數據,這個方案下的所有數據都可以隨便丟給LLM去分析,但我們從這個測試中也可以看到,在驚嘆其功能強大的同時,也切身感受到數據安全顯得比以往任何時候都重要,就像國外同事的這張片子中描述的,如今這些AI/LLM/MCP技術的應用,實際上進一步凸顯了數據安全的重要性。

在(zai)這個AI時(shi)代(dai),SQLcl 是(shi)傳統與未來的接點,也是(shi) Oracle DBA 走向智(zhi)能化(hua)世(shi)界的橋梁。

附:本文在編寫過程中參考的文章和視頻