四種使用Linux命令查詢MySQL的高效方法
在Linux中執(zhí)行MySQL查詢是后端或DevOps開發(fā)人員的必備技能。
本文總結(jié)在bash腳本或Linux命令行界面中運(yùn)行MySQL查詢的四種方法,以便開發(fā)人員能夠更好地處理MySQL數(shù)據(jù)庫。同時(shí)希望能夠?qū)λ虚_發(fā)人員提供一個(gè)好參考。
注意:本文中的所有命令都不包括-p選項(xiàng)以輸入,因?yàn)镸ySQL已保存在my.cnf文件中
1 使用“-e”選項(xiàng)運(yùn)行查詢
如果只想運(yùn)行一個(gè)簡單且短小的SQL查詢,可以在查詢后面使用-e選項(xiàng)。
mysql -uroot -D yang_db -e "SELECT * FROM t_post"
如上所示,-D選項(xiàng)用于指定要使用的數(shù)據(jù)庫,而-e選項(xiàng)用于執(zhí)行查詢。
2 導(dǎo)入外部SQL文件
有時(shí),數(shù)據(jù)庫管理員可能已經(jīng)準(zhǔn)備了一個(gè)包含復(fù)雜SQL操作的SQL文件。在這些情況下,仍然可以使用如下的-e選項(xiàng):
mysql -uroot -D yang_db -e "source ./getPosts.sql"
Linux中的source命令用于讀取和執(zhí)行文件的內(nèi)容。
3 使用輸入重定向?qū)隨QL文件
如果熟悉Linux中的I/O重定向技巧,還有一種方式來導(dǎo)入外部的.sql文件:
mysql -uroot -D yang_db <"./getPosts.sql"
通過這種方式,不需要使用-e選項(xiàng)。使用<操作符就足夠了。
4 使用“here-document”處理多行查詢
Linux中的“here-document”概念很簡單,意味著文檔是“就在這里”,不在外部文件中。
語法如下:
<<MARKER
...
MARKER
整個(gè)文檔都在“MARKER”之內(nèi),可以使用任何字符串作為“MARKER”。
看下面的示例:
#!/bin/sh
mysql -uroot -D yang_db <<QUERY
SELECT * FROM t_post
WHERE is_del=0
AND update_time<="2077-07-07";
QUERY
如上所示,使用QUERY作為“MARKER”。內(nèi)容是要執(zhí)行的SQL查詢。如果把相同的查詢寫入外部文件并通過之前的方法導(dǎo)入,結(jié)果將與“here-document”方法完全相同。
默認(rèn)情況下,查詢的結(jié)果將輸出到Linux終端。但是,如果結(jié)果很大,并且希望將其保存到單獨(dú)的文件中,可以再次利用I/O重定向技巧:
#!/bin/sh
mysql -uroot -D yang_db >output.txt <<QUERY
SELECT * FROM t_post
WHERE is_del=0
AND update_time<="2077-07-07";
QUERY