在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...