Linux shell操作mysql資料庫深入解析

2022-09-29 22:27:17 字數 2729 閱讀 7080

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