1. 程式人生 > >shell操作mysql

shell操作mysql

linux mysql

#!/bin/bash
#mysql.sh
mysql=‘mysql -uroot -ptogest‘
sql=‘show databases;use togest_sy_department;show tables;‘
$mysql -e "$sql"

mysql -uroot -ptogest --tee="mysql.log"

shell操作mysql
在shell開發中,很多時候我們需要操作mysql數據庫(比如:查詢數據、導出數據等),但是我們又無法進入mysql命令行的環境,就需要在 shell環境中模擬mysql的環境,使用mysql相關命令,本文總結幾種shell操作mysql的方法,供大家參考。方案1

[python] view plaincopy

  1. mysql -uuser -ppasswd -e"insert LogTable values(...)"

優點:語句簡單
缺點:支持的sql相對簡單
方案2
準備一個sql腳本,名字為update.sql,例如:

[python] view plaincopy

  1. CREATE TABLE user (
  2. id varchar(36) NOT NULL COMMENT ‘主鍵‘,
  3. username varchar(50) NOT NULL COMMENT ‘用戶名‘,
  4. password varchar(50) NOT NULL COMMENT ‘用戶密碼‘,
  5. createdate date NOT NULL COMMENT ‘創建時間‘,
  6. age int(11) NOT NULL COMMENT ‘年齡‘,
  7. PRIMARY KEY (id)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘用戶信息表‘;
  9. DROP TABLE IF EXISTS visit_log;
  10. CREATE TABLE visit_log (
  11. id varchar(36) character set utf8 NOT NULL,
  12. type int(11) NOT NULL,
  13. content text character set utf8 NOT NULL,
  14. createdate date NOT NULL,
  15. PRIMARY KEY (id)
  16. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=‘訪問日誌‘;

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

[python] view plaincopy

  1. use chbdb;
  2. source update.sql

然後執行如下命令:

[python] view plaincopy

  1. 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腳本,格式如下:

[python] view plaincopy

  1. #!/bin/bash
  2. mysql -u -h -p* <<EOF
  3. Your SQL script.
  4. EOF

例如:

[python] view plaincopy

  1. #!/bin/bash
  2. mysql -uroot -ppassword <<EOF
  3. use chbdb;
  4. CREATE TABLE user (
  5. id varchar(36) NOT NULL COMMENT ‘主鍵‘,
  6. username varchar(50) NOT NULL COMMENT ‘用戶名‘,
  7. password varchar(50) NOT NULL COMMENT ‘用戶密碼‘,
  8. createdate date NOT NULL COMMENT ‘創建時間‘,
  9. age int(11) NOT NULL COMMENT ‘年齡‘,
  10. PRIMARY KEY (id)
  11. ) 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,然後執行如下命令:

[python] view plaincopy

  1. mysql -uroot -ppassword < update.sql

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

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

更多文章請關註:http://www.ilovehai.com

shell操作mysql