在shell開發中,很多時候我們需要操作mysql資料庫(比如:查詢資料、匯出資料等),但是我們又無法進入mysql命令列的環境,就需要在shell環境中模擬mysql的環境,使用mysql相關命令,本文總結幾種shell操作mysql的方法,供大家參考。
方案1複製** **如下:
mysql -uuser -ppasswd -e"insert logtable values(...)"
優點:語句簡單
缺點:支援的sql相對簡單
方案2準備乙個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(bchbdkxi36) 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
然後指令碼退出,第二張表也就無法建立。
方案3新建乙個shell指令碼,格式如下:
複製** **如下:
#!/bin/bash
mysql -u* -h* -p* 《程式設計客棧of
your sql script.
eof例如:
複製** **如下:
#!/bin/bash
mysql -uroot -ppassword < use chbdb;
create table user (
id varchar(36) not null comment '主鍵',
user程式設計客棧name varchar(50) not null comment '使用者名稱',
password varchar(50) not nulbchbdkxil comment '使用者密碼',
createdate date not null comment '建立時間',
age int(11) not null comment '年齡',
primary key (`id`)
) engine=myisam default charset=utf8 comment='使用者資訊表';
優點:1>支援複雜的sql指令碼
2>無需其它額外檔案
缺點:1> 表名、字段不能使用單引號,需要修改原有sql語句
2> 一旦中間出錯,之後指令碼就不會執行,例如:
如果第一張表已經存在,則會報出如下異常:
error 1050 (42s01) at line 1 in file: 'update.sql': table 'user' already exists
然後指令碼退出,第二張表也就無法建立。
方案4準備乙個sql指令碼,如up程式設計客棧date.sql,然後執行如下命令:
複製** **如下:
mysql -uroot -ppassword < update.sql
優點:支援複雜的sql指令碼
缺點:1> 一旦中間出錯,之後指令碼就不會執行,例如:
如果第一張表已經存在,則會報出如下異常:
error 1050 (42s01) at line 1 in file: 'update.sql': table 'user' already exists
然後指令碼退出,第二張表也就無法建立。
大家知道在mysql命令列中使用source命令,即使中間出錯,後續指令碼也會繼續執行,但是如上幾種方式,均無法解決該問題,如果大家有好的建議,請回覆,謝謝。
本文標題: linux shell操作mysql資料庫深入解析
本文位址:
Linux shell 查詢操作
有時可能需要在系統中查詢具有某一特徵的檔案,find 是乙個非常有效的工具。find pathname options print exec ok 讓我們來看看該命令的引數 pathname find命令所查詢的目錄路徑。例如用 來表示當前目錄,用 來表示系統根目錄。print find命令將匹配的...
linux shell陣列操作
1 定義陣列 說明 一對括號表示是陣列,陣列元素用 空格 符號分割開。例項 test test a 1 2 3 4 5 test test echo a1 2 讀取陣列元素 形式 1 讀取某個元素 test test a 1 2 3 4 5 test test echo 3 2 讀取全部元素 tes...
Linux shell基礎操作
linux作業系統基礎高階練習題02 linux shell 1 更改shell 1.1 利用ps1變數改變命令提示,新提示符包括使用者帳號名稱 u 主機名 h 完整路徑 w 時間 a 歷史命令個數 1.2 更改ls顯示目錄檔案的顏色為白色字型,藍色背景 參 ps1 u h w a echo lsc...