1. 程式人生 > >shell 下執行mysql 命令

shell 下執行mysql 命令

copyto boa 不能 存在 ppa fault 很多 values cli

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

方案1

  1. mysql -uuser -ppasswd -e"insert LogTable values(...)"
優點:語句簡單 缺點:支持的sql相對簡單

方案2

準備一個sql腳本,名字為update.sql,例如:
  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腳本,格式如下:
  1. #!/bin/bash
  2. mysql -u* -h* -p* <<EOF
  3. Your SQL script.
  4. EOF
例如:
  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 然後腳本退出,第二張表也就無法創建。

shell 下執行mysql 命令