最近專案中有需要做乙個shell指令碼,可以對乙個資料庫執行sql操作,並將結果轉為txt,篩選結果用tab隔開,儲存至乙個遠端伺服器上,以供其他人用excel讀取用txt中的內容。
mysql中將結果儲存下來,有兩種方案,一種是在sql語句中增加into outfile語句,並且可以定製化輸出的格式。但是這種方法留下的檔案在資料庫所在的伺服器上,而期望的是將檔案放在執行指令碼的機器上。
後來實現是不改變sql語句的內容,在指令碼中將結果儲存到本地/tmp目錄下,再用curl上傳到遠端伺服器上,下面抽出指令碼中主要的結構的**,檔案上傳或者編碼轉換之類的就不放了。
#! /bin/bashdb_host='
your_db_address
'db_port=3306
db_username='
user
'db_password='
password
'db_name='
your_db_name
'table_name='
your_table_name
'output_file='
/tmp/output.txt
'sql_stmt="
use $; \
select * from $"
mysql -h $db_host -p $db_port -u $db_username --password=$db_password -e "
$sql_stmt
" -b > $output_file
mysql自動備份並上傳至git倉庫
自動備份 資料庫備份的重要性再怎麼強調也不為過。當你的操作出現差錯,但又因為沒有作備份導致資料無法還原時,你就能體會到 萬念俱灰 的心情了。需求如下 實現方式很簡單 備份指令碼mysqldump.sh bin bash cd backup message date y m d mysqldump u...
mysql檢視sql執行過程 SQL查詢執行過程
mysql查詢執行過程客戶端向伺服器傳送請求 伺服器查詢快取,快取中命中則結束,將結果返回客戶端 返回前會檢查使用者許可權 否則繼續下邊步驟 伺服器端進行sql解析 預處理,再由優化器生成對應的執行計畫 根據執行計畫呼叫儲存引擎的api執行查詢 將結果返回客戶端 一 查詢快取 如果一條sql語句以s...
mysql執行語句 mysql執行sql語句過程
流程概述 mysql得到sql語句後,大概流程如下 1.sql的解析器 負責解析和 sql 2.預處理器 對解析後的sql樹進行驗證 3.查詢優化器 得到乙個執行計畫 4.查詢執行引擎 得到資料結果集 5.將資料放回給呼叫端。流程圖如下所示 分發器及快取階段 首先,如果系統的快取功能開啟著的話,sq...