欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL?如何將查詢結(jié)果導(dǎo)出到文件(select?…?into?Statement)

 更新時(shí)間:2024年08月27日 10:34:28   作者:V1ncent?Chen  
我們經(jīng)常會(huì)遇到需要將SQL查詢結(jié)果導(dǎo)出到文件,以便后續(xù)的傳輸或數(shù)據(jù)分析的場(chǎng)景,本文就MySQL中select…into的用法進(jìn)行演示,感興趣的朋友跟隨小編一起看看吧

我們經(jīng)常會(huì)遇到需要將SQL查詢結(jié)果導(dǎo)出到文件,以便后續(xù)的傳輸或數(shù)據(jù)分析的場(chǎng)景。為了滿足這個(gè)需求,MySQL的select語(yǔ)句提供了into子句可以將的查詢結(jié)果直接導(dǎo)出到文本文件。本文就MySQL中select…into的用法進(jìn)行演示。

一、select…into語(yǔ)句簡(jiǎn)介

select…into語(yǔ)句不僅僅能夠?qū)⒉樵兘Y(jié)果導(dǎo)出到csv文件,實(shí)際上它有3種用法:

  • select … into @var_list from …. 將查詢結(jié)果寫(xiě)入到一組變量
  • select … into outfile from …. 將數(shù)據(jù)寫(xiě)入操作系統(tǒng)文件,可以自定義數(shù)據(jù)格式(分隔符、包裹符、轉(zhuǎn)義符、換行符等)。
  • select … into dumpfile from …. 將單一行寫(xiě)入文件,沒(méi)有任何格式化

1.1 基本語(yǔ)法

根據(jù)官方文檔,into子句可以出現(xiàn)在以下3個(gè)位置。雖然3個(gè)位置都符合語(yǔ)法,但select語(yǔ)句中至多只能有1個(gè)into語(yǔ)句(位置三選一):

  • 查詢字段之后,from子句前
  • 鎖定子句前(未來(lái)版本即將廢棄)
  • 語(yǔ)句的最后

這里推薦將into子句放在位置3,即語(yǔ)句的末尾,這樣相對(duì)普通的select語(yǔ)句更為接近,更容易理解,后面的示例也將采用這種寫(xiě)法。

二、用法示例

下面演示into子句三種用法。

2.1 將查詢結(jié)果保存到變量

into子句的一個(gè)常用場(chǎng)景就是將查詢結(jié)果暫時(shí)保存到變量中,以便后續(xù)查詢或使用,唯二要注意的點(diǎn)是變量的數(shù)量要和返回列數(shù)量匹配,并且最多只能返回一行數(shù)據(jù)。

以示例數(shù)據(jù)庫(kù)employees中的employees表為例,查詢3個(gè)結(jié)果,分別保存到3個(gè)變量中:

select emp_no,first_name,hire_date from employees limit 1 into @emp_no, @first_name, @hire_date;
select @emp_no, @first_name, @hire_date;

這里用limit 1子句限制返回的結(jié)果只有1行,否則會(huì)報(bào)錯(cuò)。

2.2 將查詢結(jié)果保存到文本文件

into outfile子句可以將查詢結(jié)果導(dǎo)出到文本文件,雖然并不一定要是CSV格式,但大多數(shù)情況下我們都會(huì)選擇這種格式。

要將MySQL中的數(shù)據(jù)寫(xiě)入到操作系統(tǒng)的文件中, 首先需要具有FILE權(quán)限。而且為了安全需要配置參數(shù)secure_file_priv,這個(gè)參數(shù)是限制MySQL可以寫(xiě)入文件的目錄:

show variables like 'secure_file_priv';

我們?cè)谄胀ǖ膕elect語(yǔ)句最后添加into outfile ‘/path/file_name’;即可將查詢結(jié)果寫(xiě)入文件,這里的path就是參數(shù)secure_file_priv定義的目錄(文件不能已存在):

select *from employees where emp_no<=10010 into outfile '/opt/mysql8.0.35/mysql-files/employees.txt';

下面是導(dǎo)出文件內(nèi)容,其實(shí)into outfile文件還隱式在后面附件了2個(gè)子句:

fields terminated by '\t' enclosed by '' escaped by '\\'
lines terminated by '\n' starting by ''

  • fields 表示字段屬性,terminated by ‘\t’ 以制表符分割字段,enclosed by ‘’ 不包裹字段,escaped by ‘\\’ 反斜線表示轉(zhuǎn)義符(這里2個(gè)反斜線,第一個(gè)是轉(zhuǎn)義符,第二個(gè)是反斜線)
  • lines 表示行屬性,terminated by ‘\n’ \n代表?yè)Q行符,starting by ‘’ 行的起點(diǎn)字符是空。

如果要導(dǎo)出CSV格式的文件,并且以雙引號(hào)"包裹字段,那么只需要增加一個(gè)fields terminated by ‘,’ enclosed by '"'子句即可,其他的保持默認(rèn):

select *from employees where emp_no<=10010 into outfile '/opt/mysql8.0.35/mysql-files/employees.csv' fields terminated by ',' encolsed by '"';

可以看到這次導(dǎo)出結(jié)果就是以逗號(hào)分割,以雙引號(hào)包裹字段的數(shù)據(jù):

2.3 將查詢結(jié)果保存到dumpfile

into dumpfile 子句可以將一行數(shù)據(jù)導(dǎo)出到文件,但是它不會(huì)做任何的分割,格式的定義,轉(zhuǎn)義等操作。相對(duì)應(yīng)用場(chǎng)景較少,這個(gè)操作通常用于將大型的BLOB字段保存到文件中,了解即可:

select *from employees limit 1 into dumpfile '/opt/mysql8.0.35/mysql-files/employees.dump';

注意select語(yǔ)句只能返回一行結(jié)果,否則會(huì)報(bào)錯(cuò)。

導(dǎo)出的結(jié)果如下,可以看到數(shù)據(jù)沒(méi)有任何分隔,都連在了一起,連換行都沒(méi)有(提示符和數(shù)據(jù)顯示在同一行):

到此這篇關(guān)于MySQL 將查詢結(jié)果導(dǎo)出到文件(select … into Statement)的文章就介紹到這了,更多相關(guān)mysql查詢結(jié)果導(dǎo)出到文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 有關(guān)mysql優(yōu)化的一些東東整理

    有關(guān)mysql優(yōu)化的一些東東整理

    有關(guān)mysql優(yōu)化的一些東東,自己整理的,網(wǎng)上搜集的,供朋友們學(xué)習(xí)參考吧
    2013-02-02
  • 一篇文章徹底搞定MySQL中的JSON類(lèi)型(效率非???

    一篇文章徹底搞定MySQL中的JSON類(lèi)型(效率非???

    這篇文章主要介紹了關(guān)于MySQL中JSON類(lèi)型的相關(guān)資料,MySQL?5.7.8引入JSON數(shù)據(jù)類(lèi)型,提供原生支持,相比字符類(lèi)型,具有優(yōu)勢(shì),JSON數(shù)據(jù)類(lèi)型對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,自動(dòng)將布爾類(lèi)型轉(zhuǎn)換為小寫(xiě),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • MySQL徹底卸載并且重新安裝教程

    MySQL徹底卸載并且重新安裝教程

    本文詳細(xì)介紹了卸載和重新安裝MySQL的步驟,包括停止MySQL服務(wù)、卸載軟件、清理殘余文件、刪除注冊(cè)表、刪除環(huán)境變量配置等,重新安裝時(shí),需要下載MySQL、配置環(huán)境變量、新建配置文件、初始化MySQL服務(wù)、注冊(cè)MySQL服務(wù)、啟動(dòng)MySQL服務(wù)、修改默認(rèn)賬戶密碼以及登錄MySQL
    2025-01-01
  • 解決MySQL中IN子查詢會(huì)導(dǎo)致無(wú)法使用索引問(wèn)題

    解決MySQL中IN子查詢會(huì)導(dǎo)致無(wú)法使用索引問(wèn)題

    這篇文章主要介紹了MySQL中IN子查詢會(huì)導(dǎo)致無(wú)法使用索引問(wèn)題,文章給大家介紹了兩種子查詢的寫(xiě)法,需要的朋友可以參考下
    2017-06-06
  • 詳解MySQL多版本并發(fā)控制機(jī)制(MVCC)源碼

    詳解MySQL多版本并發(fā)控制機(jī)制(MVCC)源碼

    MVCC,即多版本并發(fā)控制(Multi-Version Concurrency Control)指的是,通過(guò)版本鏈維護(hù)一個(gè)數(shù)據(jù)的多個(gè)版本,使得讀寫(xiě)操作沒(méi)有沖突,可保證不同事務(wù)讀寫(xiě)、寫(xiě)讀操作并發(fā)執(zhí)行,提高系統(tǒng)性能
    2021-06-06
  • MYSQL中SWITCH語(yǔ)句和循環(huán)語(yǔ)句舉例詳解

    MYSQL中SWITCH語(yǔ)句和循環(huán)語(yǔ)句舉例詳解

    MySQL提供了多種循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán)操作,其中包括while循環(huán)、loop循環(huán)、repeat循環(huán)和非標(biāo)準(zhǔn)的goto循環(huán),下面這篇文章主要給大家介紹了關(guān)于MYSQL中SWITCH語(yǔ)句和循環(huán)語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • MySQL查詢指定字段不是數(shù)字與逗號(hào)的sql

    MySQL查詢指定字段不是數(shù)字與逗號(hào)的sql

    今天小編遇到一個(gè)問(wèn)題因?yàn)榫庉嫷牟患?xì)心不小心將關(guān)鍵詞寫(xiě)到相關(guān)文章里面導(dǎo)致頁(yè)面無(wú)法生成,這里用sql語(yǔ)言將這些內(nèi)容獲取出來(lái)
    2020-02-02
  • MySQL8.0創(chuàng)建用戶和權(quán)限控制示例詳解

    MySQL8.0創(chuàng)建用戶和權(quán)限控制示例詳解

    這篇文章主要為大家介紹了MySQL8.0創(chuàng)建用戶和權(quán)限控制實(shí)現(xiàn)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • MySQL筆記之函數(shù)查詢的使用

    MySQL筆記之函數(shù)查詢的使用

    本篇文章介紹了mysql中函數(shù)查詢的使用。需要的朋友參考下
    2013-05-05
  • MySQL 使用自定義變量進(jìn)行查詢優(yōu)化

    MySQL 使用自定義變量進(jìn)行查詢優(yōu)化

    MySQL自定義變量估計(jì)很少人有用到,但是如果用好了也是可以輔助進(jìn)行性能優(yōu)化的。需要注意的是變量是基于連接會(huì)話的,而且可能存在一些意外的情況,需要小心使用。本篇介紹如何利用自定義變量進(jìn)行查詢優(yōu)化,提高效率
    2021-05-05

最新評(píng)論