国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux shell操作mysql數據庫深入解析

2020-10-28 18:49:02
字體:
來源:轉載
供稿:網友

在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(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
然后腳本退出,第二張表也就無法創建。

方案3
新建一個shell腳本,格式如下:

復制代碼 代碼如下:

#!/bin/bash
mysql -u* -h* -p* <<EOF
    Your SQL script.
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='用戶信息表';

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

方案4
準備一個sql腳本,如update.sql,然后執行如下命令:

復制代碼 代碼如下:

mysql -uroot -ppassword < update.sql

優點:支持復雜的sql腳本
缺點:
1> 一旦中間出錯,之后腳本就不會執行,例如:
如果第一張表已經存在,則會報出如下異常:
ERROR 1050 (42S01) at line 1 in file: 'update.sql': Table 'user' already exists
然后腳本退出,第二張表也就無法創建。

大家知道在mysql命令行中使用source命令,即使中間出錯,后續腳本也會繼續執行,但是如上幾種方式,均無法解決該問題,如果大家有好的建議,請回復,謝謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 稻城县| 元谋县| 双鸭山市| 陵川县| 汕尾市| 施甸县| 武穴市| 曲水县| 盱眙县| 西华县| 石泉县| 安宁市| 英德市| 寿阳县| 惠州市| 武隆县| 手机| 齐河县| 德惠市| 峡江县| 从江县| 宣化县| 斗六市| 赣榆县| 南通市| 汤阴县| 云霄县| 姜堰市| 涿鹿县| 云阳县| 开原市| 寿阳县| 沙洋县| 莫力| 兴安县| 长阳| 清徐县| 大厂| 兴安县| 玉环县| 泰来县|