mysql shell

mysql 查詢10分鐘以內的數據:
select *from t_agent where int_last_login>=CURRENT_TIMESTAMP - INTERVAL 10 MINUTE;



mysql關聯多表進行update更新操作
UPDATE Track
INNER JOIN MV
ON Track.trkid=MV.mvid
SET Track.is_show=MV.is_show
WHERE trkid<6
等同于
UPDATE Track,MV
SET Track.is_show=MV.is_show
WHERE Track.trkid=MV.mvid and trkid<6
【擴展】
根據結果集進行update更新操作
原表信息
表1:am_favorites_4

am_favorites_4

af_user_id

af_tag_id

af_content_id

af_content_type

374

0

535522

3

374

0

535522

3

374

89

535522

3

表2:am_tag_user_4

am_tag_user_4

atu_user_id

atu_tag_id

atu_num

374

0

9

374

89

9

更新結果目標表:am_tag_user_4

am_tag_user_4?

atu_user_id

atu_tag_id

atu_num

374

0

7

374

89

8

UPDATE?am_tag_user_4 tag

INNER?JOIN?am_favorites_4 fav

ON?tag.atu_tag_id=fav.af_tag_id?and?tag.atu_user_id=fav.af_user_id

INNER?JOIN?(SELECT??af_user_id,af_tag_id,count(*)?as?cnt

FROM?am_favorites_4,am_tag_user_4

where?atu_tag_id=af_tag_id?and?atu_user_id=af_user_id?and?af_content_id?=?535522?andaf_content_type=3?and?af_user_id=374

group?by?af_user_id,af_tag_id)?AS?T1

ON?tag.atu_tag_id=T1.af_tag_id?and?tag.atu_user_id=T1.af_user_id

SET?tag.atu_num=tag.atu_num-?T1.cnt

http://blog.sina.com.cn/s/blog_4c197d420101aer2.html

?

在shell開發中,很多時候我們需要操作mysql數據庫(比如:查詢數據、導出數據等),但是我們又無法進入mysql命令行的環境,就需要在shell環境中模擬mysql的環境,使用mysql相關命令,本文總結幾種shell操作mysql的方法,供大家參考。

方案1

  1. mysql?-uuser?-ppasswd?-e"insert?LogTable?values(...)"??
?
優點:語句簡單
缺點:支持的sql相對簡單

方案2

準備一個sql腳本,名字為update.sql,例如:
  1. CREATE?TABLE?`user`?(??
  2. ??`id`?varchar(36)?NOT?NULL?COMMENT?'主鍵',??
  3. ??`username`?varchar(50)?NOT?NULL?COMMENT?'用戶名',??
  4. ??`password`?varchar(50)?NOT?NULL?COMMENT?'用戶密碼',??
  5. ??`createdate`?date?NOT?NULL?COMMENT?'創建時間',??
  6. ??`age`?int(11)?NOT?NULL?COMMENT?'年齡',??
  7. ??PRIMARY?KEY??(`id`)??
  8. )?ENGINE=MyISAM?DEFAULT?CHARSET=utf8?COMMENT='用戶信息表';??
  9. DROP?TABLE?IF?EXISTS?`visit_log`;??
  10. CREATE?TABLE?`visit_log`?(??
  11. ??`id`?varchar(36)?character?set?utf8?NOT?NULL,??
  12. ??`type`?int(11)?NOT?NULL,??
  13. ??`content`?text?character?set?utf8?NOT?NULL,??
  14. ??`createdate`?date?NOT?NULL,??
  15. ??PRIMARY?KEY??(`id`)??
  16. )?ENGINE=MyISAM?DEFAULT?CHARSET=latin1?COMMENT='訪問日志';??
?
新建一個update_mysql.sh,內容如下:
  1. use?chbdb;??
  2. source?update.sql??
?
然后執行如下命令:
  1. cat?update_mysql.sh?|?mysql?--user=root?-ppassword??
?
優點:支持復雜的sql腳本
缺點:
1> 需要兩個文件:update.sql和update_mysql.sh
2> 一旦中間出錯,之后腳本就不會執行,例如:
如果第一張表已經存在,則會報出如下異常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后腳本退出,第二張表也就無法創建。

方案3

新建一個shell腳本,格式如下:
  1. #!/bin/bash??
  2. mysql?-u*?-h*?-p*?<<EOF??
  3. ????Your?SQL?script.??
  4. EOF??
?
例如:
#!/bin/bash  
mysql -uroot  -ppassword <<EOF  use chbdb;  CREATE TABLE user (  id varchar(36) NOT NULL COMMENT '主鍵',  username varchar(50) NOT NULL COMMENT '用戶名',  password varchar(50) NOT NULL COMMENT '用戶密碼',  createdate date NOT NULL COMMENT '創建時間',  age int(11) NOT NULL COMMENT '年齡',  PRIMARY KEY  (`id`)  
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用戶信息表';  
EOF

?

優點:
1>支持復雜的sql腳本
2>無需其它額外文件
缺點:
1> 表名、字段不能使用單引號,需要修改原有sql語句
2> 一旦中間出錯,之后腳本就不會執行,例如:
如果第一張表已經存在,則會報出如下異常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后腳本退出,第二張表也就無法創建。

方案4

準備一個sql腳本,如update.sql,然后執行如下命令:
  1. mysql?-uroot?-ppassword?<?update.sql??
?
優點:支持復雜的sql腳本
缺點:
1> 一旦中間出錯,之后腳本就不會執行,例如:
如果第一張表已經存在,則會報出如下異常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后腳本退出,第二張表也就無法創建。
大家知道在mysql命令行中使用source命令,即使中間出錯,后續腳本也會繼續執行,但是如上幾種方式,均無法解決該問題,如果大家有好的建議,請回復,謝謝。

http://www.cnblogs.com/wangkangluo1/archive/2012/04/27/2472898.html

?

對于自動化運維,諸如備份恢復之類的,DBA經常需要將SQL語句封裝到shell腳本。本文描述了在Linux環境下mysql數據庫中,shell腳本下調用sql語句的幾種方法,供大家參考。對于腳本輸出的結果美化,需要進一步完善和調整。以下為具體的示例及其方法。

1、將SQL語句直接嵌入到shell腳本文件中

?

復制代碼代碼如下:

--演示環境??
[root@SZDB ~]# more /etc/issue??
CentOS release 5.9 (Final)??
Kernel \r on an \m??
??
root@localhost[(none)]> show variables like 'version';??
+---------------+------------+??
| Variable_name | Value????? |??
+---------------+------------+??
| version?????? | 5.6.12-log |??
+---------------+------------+??
??
[root@SZDB ~]# more shell_call_sql1.sh???
#!/bin/bash??
# Define log??
TIMESTAMP=`date +%Y%m%d%H%M%S`??
LOG=call_sql_${TIMESTAMP}.log??
echo "Start execute sql statement at `date`." >>${LOG}??
??
# execute sql stat??
mysql -uroot -p123456 -e "??
tee /tmp/temp.log??
drop database if exists tempdb;??
create database tempdb;??
use tempdb??
create table if not exists tb_tmp(id smallint,val varchar(20));??
insert into tb_tmp values (1,'jack'),(2,'robin'),(3,'mark');??
select * from tb_tmp;??
notee??
quit"??
??
echo -e "\n">>${LOG}??
echo "below is output result.">>${LOG}??
cat /tmp/temp.log>>${LOG}??
echo "script executed successful.">>${LOG}??
exit;??
??
[root@SZDB ~]# ./shell_call_sql1.sh???
Logging to file '/tmp/temp.log'??
+------+-------+??
| id?? | val?? |??
+------+-------+??
|??? 1 | jack? |??
|??? 2 | robin |??
|??? 3 | mark? |??
+------+-------+??
Outfile disabled.??

?

2、命令行調用單獨的SQL文件

?

復制代碼代碼如下:

[root@SZDB ~]# more temp.sql???
tee /tmp/temp.log??
drop database if exists tempdb;??
create database tempdb;??
use tempdb??
create table if not exists tb_tmp(id smallint,val varchar(20));??
insert into tb_tmp values (1,'jack'),(2,'robin'),(3,'mark');??
select * from tb_tmp;??
notee??
??
[root@SZDB ~]# mysql -uroot -p123456 -e "source /root/temp.sql"??
Logging to file '/tmp/temp.log'??
+------+-------+??
| id?? | val?? |??
+------+-------+??
|??? 1 | jack? |??
|??? 2 | robin |??
|??? 3 | mark? |??
+------+-------+??
Outfile disabled.??

?

3、使用管道符調用SQL文件

?

復制代碼代碼如下:

[root@SZDB ~]# mysql -uroot -p123456 </root/temp.sql??
Logging to file '/tmp/temp.log'??
id????? val??
1?????? jack??
2?????? robin??
3?????? mark??
Outfile disabled.??
??
#使用管道符調用SQL文件以及輸出日志??
[root@SZDB ~]# mysql -uroot -p123456 </root/temp.sql >/tmp/temp.log??
[root@SZDB ~]# more /tmp/temp.log??
Logging to file '/tmp/temp.log'??
id????? val??
1?????? jack??
2?????? robin??
3?????? mark??
Outfile disabled.??

?

4、shell腳本中MySQL提示符下調用SQL

?

復制代碼代碼如下:

[root@SZDB ~]# more shell_call_sql2.sh??
#!/bin/bash??
mysql -uroot -p123456 <<EOF??
source /root/temp.sql;??
select current_date();??
delete from tempdb.tb_tmp where id=3;??
select * from tempdb.tb_tmp where id=2;??
EOF??
exit;??
[root@SZDB ~]# ./shell_call_sql2.sh??
Logging to file '/tmp/temp.log'??
id????? val??
1?????? jack??
2?????? robin??
3?????? mark??
Outfile disabled.??
current_date()??
2014-10-14??
id????? val??
2?????? robin??

?

5、shell腳本中變量輸入與輸出

?

復制代碼代碼如下:

[root@SZDB ~]# more shell_call_sql3.sh??
#!/bin/bash??
cmd="select count(*) from tempdb.tb_tmp"??
cnt=$(mysql -uroot -p123456 -s -e "${cmd}")??
echo "Current count is : ${cnt}"??
exit???
[root@SZDB ~]# ./shell_call_sql3.sh???
Warning: Using a password on the command line interface can be insecure.??
Current count is : 3??
??
[root@SZDB ~]# echo "select count(*) from tempdb.tb_tmp"|mysql -uroot -p123456 -s??
3??
??
[root@SZDB ~]# more shell_call_sql4.sh??
#!/bin/bash??
id=1??
cmd="select count(*) from tempdb.tb_tmp where id=${id}"??
cnt=$(mysql -uroot -p123456 -s -e "${cmd}")??
echo "Current count is : ${cnt}"??
exit???
??
[root@SZDB ~]# ./shell_call_sql4.sh???
Current count is : 1??
??
#以上腳本演示中,作拋磚引玉只用,對于輸出的結果不是很規整友好,需要進一步改善和提高。
http://www.jb51.net/article/56944.htm

?

轉載于:https://www.cnblogs.com/softidea/p/6043674.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kaggle計算機視覺比賽技巧,9. 計算機視覺 - 9.12. 實戰Kaggle比賽:圖像分類(CIFAR-10) - 《動手學深度學習》 - 書棧網 · BookStack...

9.12. 實戰Kaggle比賽&#xff1a;圖像分類(CIFAR-10)到目前為止&#xff0c;我們一直在用Gluon的data包直接獲取NDArray格式的圖像數據集。然而&#xff0c;實際中的圖像數據集往往是以圖像文件的形式存在的。在本節中&#xff0c;我們將從原始的圖像文件開始&#xff0c;一步…

qthread中獲取當前優先級_Linux中強大的top命令

top命令算是最直觀、好用的查看服務器負載的命令了。它實時動態刷新顯示服務器狀態信息&#xff0c;且可以通過交互式命令自定義顯示內容&#xff0c;非常強大。在終端中輸入top&#xff0c;回車后會顯示如下內容&#xff1a;top - 21:48:39 up 8:57, 2 users, load average: 0…

JavaScript中帶示例的String repeat()方法

JavaScript | 字符串repeat()方法 (JavaScript | String repeat() Method) The String.repeat() method in JavaScript is used to generate a string by repeating the calling string n number of times. n can be any integer from o to any possible number in JavaScript.…

Python生成驗證碼

#!/usr/bin/env python #coding:utf8 import random #方法1&#xff1a; str_codezxcvbnmasdfghjklqwertyuiopZXCVBNMASDFGHJKLQWERTYUIOP0123456789new_codefor i in range(4):   new_coderandom.choice(str_code)print new_code #方法2&#xff1a; new_code[]def str_code…

snmp 獲得硬件信息_計算機網絡基礎課程—簡單網絡管理協議(SNMP)

簡單網絡管理協議(Simple Network Management Protocol)?除了提供網絡層服務的協議和使用那些服務的應用程序&#xff0c;因特網還需要運行一些讓管理員進行設備管理、調試問題、控制路由、監測機器狀態的軟件。這種行為稱為網絡管理。??隨著網絡技術的飛速發展&#xff0c;…

僵尸毀滅工程 服務器已停止運行,《僵尸毀滅工程》steam is not enabled錯誤解決方法...

Steam 上面的 Project Zomboid 因為帶有 VAC 所以建服開服需要 Steam服務器認證&#xff0c;這也是出現 steam is not enabled 錯誤主要原因&#xff0c;也是無法和普通零售正版所建的服務器聯機的罪魁禍首。分兩種情況(下面 Project Zomboid 均簡稱PZ)&#xff1a;1、steam版P…

spring boot 1.4默認使用 hibernate validator

spring boot 1.4默認使用 hibernate validator 5.2.4 Final實現校驗功能。hibernate validator 5.2.4 Final是JSR 349 Bean Validation 1.1的具體實現。 How to disable Hibernate validation in a Spring Boot project As [M. Deinum] mentioned in a comment on my original …

python mpi開銷_GitHub - hustpython/MPIK-Means

并行計算的K-Means聚類算法實現一&#xff0c;實驗介紹聚類是擁有相同屬性的對象或記錄的集合&#xff0c;屬于無監督學習&#xff0c;K-Means聚類算法是其中較為簡單的聚類算法之一&#xff0c;具有易理解&#xff0c;運算深度塊的特點.1.1 實驗內容通過本次課程我們將使用C語…

服務器修改開機啟動項,啟動項設置_服務器開機啟動項

最近很多觀眾老爺在苦覓關于啟動項設置的解答&#xff0c;今天欽編為大家綜合5條解答來給大家解開疑惑&#xff01; 有98%玩家認為啟動項設置_服務器開機啟動項值得一讀&#xff01;啟動項設置1.如何在bios設置硬盤為第一啟動項詳細步驟根據BIOS分類的不同操作不同&#xff1a;…

字符串查找字符出現次數_查找字符串作為子序列出現的次數

字符串查找字符出現次數Description: 描述&#xff1a; Its a popular interview question based of dynamic programming which has been already featured in Accolite, Amazon. 這是一個流行的基于動態編程的面試問題&#xff0c;已經在亞馬遜的Accolite中得到了體現。 Pr…

Ubuntu 忘記密碼的處理方法

Ubuntu系統啟動時選擇recovery mode&#xff0c;也就是恢復模式。接著選擇Drop to root shell prompt ,也就是獲取root權限。輸入命令查看用戶名 cat /etc/shadow &#xff0c;$號前面的是用戶名輸入命令&#xff1a;passwd "用戶名" 回車就可以輸入新密碼了轉載于:…

服務器mdl文件轉換,Simulink Project 中 MDL 到 SLX 模型文件格式的轉換

打開彈體示例項目并將 MDL 文件另存為 SLX運行以下命令以創建并打開“sldemo_slproject_airframe”示例的工作副本。Simulink.ModelManagement.Project.projectDemo(airframe, svn);rebuild_s_functions(no_progress_dialog);Creating sandbox for project.Created example fil…

vue 修改div寬度_Vue 組件通信方式及其應用場景總結(1.5W字)

前言相信實際項目中用過vue的同學&#xff0c;一定對vue中父子組件之間的通信并不陌生&#xff0c;vue中采用良好的數據通訊方式&#xff0c;避免組件通信帶來的困擾。今天筆者和大家一起分享vue父子組件之間的通信方式&#xff0c;優缺點&#xff0c;及其實際工作中的應用場景…

Java System類identityHashCode()方法及示例

系統類identityHashCode()方法 (System class identityHashCode() method) identityHashCode() method is available in java.lang package. identityHashCode()方法在java.lang包中可用。 identityHashCode() method is used to return the hashcode of the given object – B…

Linux中SysRq的使用(魔術鍵)

轉&#xff1a;http://www.chinaunix.net/old_jh/4/902287.html 魔術鍵&#xff1a;Linux Magic System Request Key Hacks 當Linux 系統不能正常響應用戶請求時, 可以使用SysRq小工具控制Linux. 一 SysRq的啟用與關閉 要想啟用SysRq, 需要在配置內核時設置Magic SysRq key (CO…

鏈接服務器訪問接口返回了消息沒有活動事務,因為鏈接服務器 SQLEHR 的 OLE DB 訪問接口 SQLNCLI10 無法啟動分布式事務。...

查看一下MSDTC啟動是否正確1、運行 regedt32&#xff0c;瀏覽至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC。添加一個 DWORD 值 TurnOffRpcSecurity&#xff0c;值數據為 1。2、重啟MS DTC服務。3、打開“管理工具”的“組件服務”。a. 瀏覽至"啟動管理工具"。b.…

micropython 蜂鳴器_基于MicroPython的TPYBoard微信遠程可燃氣體報警器的設計與實現...

前言在我們平時的生活中&#xff0c;經常看到因氣體泄漏發生爆炸事故的新聞。房屋起火、人體中毒等此類的新聞報道層出不窮。這種情況下&#xff0c;人民就發明了可燃氣體報警器。當工業環境、日常生活環境(如使用天然氣的廚房)中可燃性氣體發生泄露&#xff0c;可燃氣體報警器…

Java PropertyPermission getActions()方法與示例

PropertyPermission類的getActions()方法 (PropertyPermission Class getActions() method) getActions() method is available in java.util package. getActions()方法在java.util包中可用。 getActions() method is used to get the list of current actions in the form of…

源碼安裝nginx以及平滑升級

源碼安裝nginx以及平滑升級作者&#xff1a;尹正杰版權聲明&#xff1a;原創作品&#xff0c;謝絕轉載&#xff01;否則將追究法律責任。歡迎加入&#xff1a;高級運維工程師之路 598432640這個博客不方便上傳軟件包&#xff0c;我給大家把軟件包放到百度云鏈接&#xff1a;htt…

ajax 跨站返回值,jquery ajax 跨域問題

補充回答&#xff1a;你的動態頁只是一個請求頁。例如你新建一個 get.asp 頁面&#xff0c;用以下代碼&#xff0c;在服務端實現像URL異步(ajax)請求&#xff0c;將請求結果輸出。客戶端頁面再次用ajax(JS或者jquery的)向get.asp請求數據。兩次ajax完成異域數據請求。get.asp代…