[轉]使用tee記錄mysql client 所有的操作,十個節省時間的mysql命令


查看:
tail -f /tmp/jack.txt

一:tee
方法一、配置文件
在服務器上的/etc/my.cnf中的[client]加入 
tee =/tmp/client_mysql.log即可.


方法二、命令行
1.mysql -uroot --tee=/tmp/client_mysql.log 

2.這個類似於sqlplus的spool功能,可以將命令行中的結果保存到外部文件中。如果指定已經存在的文件,則結果會附加到文件中。
mysql> tee client_mysql.log 
Logging to file 'client_mysql.log '
或者
mysql> \T client_mysql.log 
Logging to file 'client_mysql.log '

mysql> notee
Outfile disabled.
或者
mysql> \t
Outfile disabled.

二:mysql pager、tee、prompt說明:

當表中數據行很多,一頁看不完時,可以使用pager [cmd]更改mysql的查詢輸出,cmd為linux的標准命令,如:
mysql> pager less;
mysql> select * from test.dept;
查詢輸出都是通過管道傳給less命令,可以實現分頁瀏覽
mysql> nopager;即可回到標准輸出stdout
還可使用如下語句將輸出發送到文件中:
mysql> pager cat>/home/pw/osq.txt;

less說明:
退出:“:q”
下一頁:“F”
上一頁:“B”
查詢

向前搜索
/ - 使用一個模式進行搜索,並定位到下一個匹配的文本
n - 向前查找下一個匹配的文本
N - 向后查找前一個匹配的文本
向后搜索
? - 使用模式進行搜索,並定位到前一個匹配的文本
n - 向后查找下一個匹配的文本
N - 向前查找前一個匹配的文本

tee說明
mysql>tee filename
可以將之后在mysql的所有輸入輸出操作記錄到filename中。

prompt說明
用於修改mysql提示符
[mysql] 
prompt=(
來自:http://blog.sina.com.cn/s/blog_45722cc00100z5wm.html

  雖然有許多基於GUI的MySQL客戶端存在,如著名的phpMyAdmin和SQLYog,但我一直喜歡原生的MySQL命令行客戶端,的確,在未熟悉這些命令行接口(CLI)之前,我們需要花一些時間來熟悉它們,特別是你平時不是經常在具有強大的CLI環境的操作系統下工作時,但只要經過一些練習,你就可以通過CLI管理用戶,瀏覽你的數據庫和執行其它任務,其快感是其它人體會不到的。
  在這篇文章中,我將會介紹我在工作中積累起來的一些MySQL命令行客戶端技巧,不管你嘗試其中一個還是所有技巧,我敢保證你一定會節省大量的時間。
  順便提一下,MySQL命令行客戶端適應所有操作系統,當然包括Windows,但因為Windows原生CLI環境讓人畏懼,因此推薦Windows用戶下載並安裝Console,它是Windows命令行的一個替代解決方案,提供了更強大的功能,如方便的文本選擇,多標簽窗口等。
  1、登錄過程自動化
  正確配置的MySQL服務器需要你提供用戶名和密碼進行身份驗證,通常情況下,我們可以直接在mysql命令后加上用戶名,出於安全考慮,密碼就不跟上了,回車執行時,命令提示符會提醒你輸入密碼。
%>mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. ...
  通過這一個小小的改進,一年可以少輸入幾千次用戶名,累計起來在登錄時間上可以節省幾個小時,創建一個.my.cnf文件,將其放在你的home目錄下,如果是Windows,文件名則為my.ini,並且要放在MySQL安裝目錄下,在這個文件中,添加下面的代碼,請使用你的登錄信息替換占位符。
[client] host = your_mysql_server user = your_username password = your_password
  一定要正確設置這個文件的權限,防止敏感數據被偷窺。
  2、自動切換數據庫
  登錄客戶端后,你需要切換到目標數據庫,通常我們會使用下面這個命令來切換數據庫:
mysql>use wjgilmore_dev;
  如果你想登錄后自動切換到目標數據庫,可以在上一步介紹的文件中添加下面的命令,注意位置也要放在[client]小節:
database = your_database_name

  3、從腳本發送命令
  設計一個新數據庫時,我喜歡使用MySQL Workbench(MySQL工作台)設計模式和關系,它是一個特別強大的工具,你可以在圖形界面下管理你的模式,然后同步到MySQL服務器,或將SQL命令導出到一個文件,方便以后再導入到MySQL。
  如果你喜歡手寫代碼,如創建大量的存儲過程,或執行一個很長的連接,你可以將SQL保存為一個文件,然后將這個文件傳遞給客戶端執行,如:
%>mysql < schema.sql
  當然你需要指定連接字符串,或象前面一樣通過配置文件來指定。
  4、垂直顯示結果
  即使是很簡單的表模式,也會包含幾列字段,例如下面的表由11個字段組成,當我執行一個全結構查詢時,輸入結果如下:
mysql> select * from accounts where username = 'wjgilmore'; 
+----+-----------+------------------+------------------------------ ----+----------+-----------+------------+-----------+-------------- --------------------+---------------------+---------------------+ | id | username | email | password | zip_code | latitude | longitude | confirmed | recovery | created_on | last_login | +----+-----------+------------------+------------------------------- ---+----------+-----------+------------+-----------+----------------- -----------------+---------------------+---------------------+ | 7 | wjgilmore | wj@wjgilmore.com | 2b877b4b825b48a9a0950dd5bd1f264d | 43201 | 39.984577 | -83.018692 | 1 | 8bnnwtqlt2289q2yp81tuge82fty501h | 2010-09-16 14:48:41 | 2010-10-27 15:49:44 | +----+-----------+------------------+---------------------------------- +----------+-----------+------------+-----------+---------------------- ------------+---------------------+---------------------+
  顯然我們不能接受,也無法閱讀這種顯示結果,使用G命令將上面丑陋的顯示結果轉換為垂直型。
mysql> select * from accounts where username = 'wjgilmore'G *************************** 1. row *************************** id: 7 username: wjgilmore email: wj@wjgilmore.com password: 2b877b4b825b48a9a0950dd5bd1f264d zip_code: 43201 latitude: 39.984577 longitude: -83.018692 confirmed: 1 recovery: 8bnnwtqlt2289q2yp81tuge82fty501h created_on: 2010-09-16 14:48:41 last_login: 2010-10-27 15:49:44
  這樣看起來就更舒服一點。

  5、啟用Tab鍵自動完成功能
  重復輸入表名和字段名無疑是很乏味的,給mysql客戶端傳遞一個--auto-rehash參數,或是在my.ini文件中添加下面的命令來啟用Tab鍵自動完成功能。
[mysql] auto-rehash
  6、改變提示符
  我不止一次想查看或修改被告知表不存在的模式,遇到這種情況我常常會很恐懼,大多數時候我登錯數據庫,導致錯誤地刪除不該刪除的表,通過修改MySQL客戶端提示符,讓它顯示當前操作的數據庫名字,從而避免誤操作,為了讓mysql客戶端具備這種交互性,登錄后執行下面的命令即可:
mysql>prompt [d]> [dev_wjgilmore_com]>
  你可能希望永久保持這種效果,簡單,只需要將下面的命令添加到你的配置文件中即可:
prompt = [d]>
  當然不僅限於提示數據庫名字,還可以顯示當前日期和時間,主機名和用戶名,請閱讀MySQL手冊了解更全面的信息。
  7、使用安全更新預防災難
  前面我也提到,當表被意外刪除時可能會引起恐懼,我相信不止我一個人有類似的經歷,除了不小心執行了DROP TABLE外,更讓人崩潰的是忽略WHERE子句的UPDATE命令,例如,假設你想使用下面的命令修改用戶的用戶名:
mysql>UPDATE users set User = 'wjgilmore' WHERE User = 'wjgilmore-temp';
  但當你沖忙地想出去吃飯時,可能忘記敲入后面的WHERE子句
mysql>UPDATE users set User = 'wjgilmore';
  一旦你按下回車,后果就很嚴重,users表中所有用戶的用戶名全部被修改為wjgilmore了,為了避免這種低級,但又會帶來災難性后果的錯誤,請在配置文件中添加下面的命令:
safe-updates

  8、使用命令文檔
  許多用戶都知道mysql客戶端的內置文檔,輸入help命令時,它會顯示一長串的命令列表。
mysql>help 
... List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (?) Synonym for `help'. clear (c) Clear the current input statement. connect (r) Reconnect to the server. Optional arguments are db and host. delimiter (d) Set statement delimiter. ...
  如果你不知道DESCRIBE命令如何使用,只需要輸入
mysql>help describe;
Name: 'DESCRIBE' Description: Syntax: {DESCRIBE | DESC} tbl_name [col_name | wild] DESCRIBE provides information about the columns in a table. It is a shortcut for SHOW COLUMNS FROM. These statements also display information for views. (See [HELP SHOW COLUMNS].) ...
  9、使用Pager
  有時你可能想查看表的某一行數據,但在屏幕上往往會顯示滿屏的數據,除了使用LIMIT子句外,開啟客戶端pager,設置你的系統分頁實用程序:
mysql>pager more PAGER set to 'more'
  如果要禁用pager,執行nopager命令即可。
  10、將輸出內容轉儲到文件
  你可能偶爾需要將SQL執行結果輸出到一個文本文件,可以使用SELECT INTO OUTFILE command命令達到目的,或直接在mysql客戶端中啟用tee命令,並制定輸出文件實現同樣的功能,如:
mysql>tee sales_report.txt
  小結
  不管你是挑選其中一部分還是嘗試這10個技巧,它們都會為你節省大量的時間和精力,並會減輕你的痛苦,如果你知道其它MySQL命令行技巧,不妨在評論中一起分享一下吧!
以上十個方法來自:http://www.searchdatabase.com.cn/showcontent_43297.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM