Shell下執行mysql 命令

2021-08-02 01:49:10 字數 2296 閱讀 6098

在shell開發中,很多時候我們需要操作mysql資料庫(比如:查詢資料、匯出資料等),但是我們又無法進入mysql命令列的環境,就需要在shell環境中模擬mysql的環境,使用mysql相關命令。

mysql -uuser -ppasswd -e"insert logtable values(...)"
優點:語句簡單

缺點:支援的sql相對簡單

準備乙個sql指令碼,名字為update.sql,例如:

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='使用者資訊表';  

drop table if exists `visit_log`;  

create table `visit_log` (  

`id` varchar(36) character set utf8 not null,  

`type` int(11) not null,  

`content` text character set utf8 not null,  

`createdate` date not null,  

primary key  (`id`)  

) engine=myisam default charset=latin1 comment='訪問日誌';

新建乙個update_mysql.sh,內容如下:

use chbdb;  

source update.sql

然後執行如下命令:

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

然後指令碼退出,第二張表也就無法建立。

新建乙個shell指令碼,格式如下:

#!/bin/bash  

mysql -u* -h* -p* 《例如:

#!/bin/bash  

mysql -uroot  -ppassword <優點:

1.支援複雜的sql指令碼

2.無需其它額外檔案

缺點:

1. 表名、字段不能使用單引號,需要修改原有sql語句

2. 一旦中間出錯,之後指令碼就不會執行,例如:

如果第一張表已經存在,則會報出如下異常:

error 1050 (42s01) at line 1 in file: 'update.sql': table 'user' already exists

然後指令碼退出,第二張表也就無法建立。

準備乙個sql指令碼,如update.sql,然後執行如下命令:

mysql -uroot -ppassword < update.sql

優點:支援複雜的sql指令碼

缺點:一旦中間出錯,之後指令碼就不會執行,例如:

如果第一張表已經存在,則會報出如下異常:

error 1050 (42s01) at line 1 in file: 'update.sql': table 'user' already exists

然後指令碼退出,第二張表也就無法建立。

Linux下QT中執行shell命令

當需要在qt中執行shell命令時可以利用以下方法 1 首先包含標頭檔案 include 2 執行shell命令 qprocess execute ls include void widget on pushbutton clicked system ls 呼叫linux c函式庫中的system ...

linux 下shell指令碼執行多個命令的方法

1.每個命令之間用 隔開 說明 各命令的執行給果,不會影響其它命令的執行。換句話說,各個命令都會執行,但不保證每個命令都執行成功。2.每個命令之間用 隔開 說明 若前面的命令執行成功,才會去執行後面的命令。這樣可以保證所有的命令執行完畢後,執行過程都是成功的。例如 cat etc redhat re...

Android執行shell命令

android執行shell命令 一 方法 執行乙個shell命令,並返回字串值 param cmd 命令名稱 引數組成的陣列 例如 param workdirectory 命令執行路徑 例如 system bin return 執行結果組成的字串 throws ioexception public...