本文介紹了如何在shell中讀寫mysql數據庫。主要介紹了如何在shell 中連接mysql數據庫,如何在shell中創建數據庫,創建表,插入csv文件,讀取mysql數據庫,導出mysql數據庫為xml或html文件, 并分析了核心語句。本文介紹的方法適用于PostgreSQL ,相對mysql而言,shell 中讀寫PostgreSQL會更簡單些。
1. 連接mysql 數據庫
shell中連接數據庫的方法很簡單,只需要指定用戶名,密碼,連接的數據庫名稱,然后通過重定向,輸入mysql的語句,如下所示:
代碼如下:mysql -u USERNAME -p PASSWORD DATABASENAME <<EOF 2>/dev/null
show databases;
EOF
但這并不是一個好辦法,任何使用該腳本的用戶都能看到該數據庫用戶的賬號和密碼,要解決這個問題,可以用mysql 數據庫的一個特殊配置文件。mysql 數據庫使用$HOME/.my.cnf 文件來讀取特殊的啟動命令和設置。其中一項設置是由該用戶賬戶發起的mysql 會話的默認密碼。要在這個文件中設置默認密碼,可以加入下面的內容:
代碼如下:
[client]
password = 123456
然后,別忘了修改權限:
chmod 400 .my.cnf
這樣就可以通過腳本訪問mysql數據庫了,如下所示:
#!/bin/bash
MYSQL=`which mysql`
$MYSQL test -u root << EOF
show databases;
show tables;
select * from employees where salary > 4000;
EOF
2. 創建數據庫
通過上面的方法連接數據庫,再通過重定向輸入mysql語句,shell中讀寫mysql基本就介紹完了。只要把sql語句寫對了,通過重定向執行即可,下面來看一個實例:
代碼如下:
#!/bin/bash
##############################
# @file create_db_mysql.sh
# @brief create database and tables in mysql
# @author Mingxing LAI
# @version 0.1
# @date 2013-01-20
##############################
USER="root"
DATABASE="students"
TABLE="students"
######################
#crate database
mysql -u $USER << EOF 2>/dev/null
CREATE DATABASE $DATABASE
EOF
[ $? -eq 0 ] && echo "created DB" || echo DB already exists
######################
#create table
mysql -u $USER $DATABASE << EOF 2>/dev/null
CREATE TABLE $TABLE(
id int,
name varchar(100),
mark int,
dept varchar(4)
);
EOF
[ $? -eq 0 ] && echo "Created table students" || echo "Table students already exist"
######################
#delete data
mysql -u $USER $DATABASE << EOF 2>/dev/null
DELETE FROM $TABLE;
EOF
這個腳本比較簡單,就是幾條SQL語句,沒什么好解釋的,下面來看一下,如何讀入csv 文件,然后插入到mysql數據庫中。
3. 插入csv 文件
上面創建了一個學生表,表中有學生的學號,姓名,成績,系別,假設有一個csv文件,內容如下:
新聞熱點
疑難解答