mysql筆記(一):簡單的過程/視圖/表狀態/導入導出數據到文本/導入導出數據到sql文件

過程/函數:html

//顯示數據庫中全部存儲的存儲過程基本信息,包括所屬數據庫,存儲過程
show procedure/function status [like 'pattern']
//從系統表中查詢某一存儲過程的相關信息
select * from mysql.proc where name = 'procedure_name'
//建立過程
create procedure count_user() select count(*) as user_number from mysql.user;
//調用過程
call count_user();
//刪除過程
drop procedure procedure_name
//指定的存儲過程的建立信息
show create procedure procedure_name

視圖:視圖做爲一張表的查詢封裝,能夠很好的起到中間組件的做用,其實視圖也是一張表,虛擬表java

//建立視圖
create view user_view as select host, user from mysql.user;
//使用視圖
select * from user_view [where condition.....]
//刪除視圖
drop view user_view
//查看視圖 
//show table status 會羅列出當前數據庫全部的表的狀態,視圖做爲一張特殊表也會被列出來且comment="view"
show table status where comment='view'
//查看視圖建立信息
show create view view_name

查看存儲過程/函數/觸發器/事件/視圖mysql

show procedure status
show function status
show triggers
show events
show table status [from dbname] [like 'pattern'] where comment="view"

查看錶狀態:查看當前數據庫或指定數據庫的全部表的狀態信息sql

show table status [from dbname] [like 'pattern']

查看數據庫使用量shell

//每一個數據庫的信息圖表
use information_schema;
//查看全部數據庫的總大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data_size from tables;
//查看某一數據庫的大小table_schema
select concat(round(sum(data_length/1024/1024),2),'MB') as data_size from tables where table_schema='dbname';
//查看某一表的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='dbname' and table_name='table_name';

導出數據到文件 into outfile 'file_path_name'數據庫

select * FROM test.table into outfile '/tmp/data.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

導入mysql服務器端數據到數據庫 load data infile 'file_path_name'服務器

LOAD DATA INFILE '/tmp/data.txt' INTO TABLE test.table_same_create_info FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'

導入客戶端上的數據到數據庫 load data local infile 'file_path_name'網絡

LOAD DATA LOCAL INFILE '/tmp/data.txt' INTO TABLE test.table_same_create_info FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'

FIELDS TERMINATED BY ',' 字段間分割符函數

OPTIONALLY ENCLOSED BY '"' 將字段包圍 對數值型無效ui

LINES TERMINATED BY '\n' 換行符

mysql

一、導出數據 mysql -e "command" [--skip-colunm-names] dbName

     --e: 執行某命令並退出

    --skip-colunm-names: 導出數據時不攜帶列名,只有數據

mysql -u root -p -e "select * from tableName" --skip-column-names dbName > data.sql

   如同登陸mysql後的 

select * from tableName into outfile 'data.sql'

二、導入數據 mysql -u root -p --default-character-set=utf8 -P 3306 < data.sql

mysqldump

-A 全庫備份
--routines 備份存儲過程和函數
--default-character-set=utf8 設置字符集
--lock-all-tables 全局一致性鎖
--add-drop-database 在每次執行建表語句以前,先執行DROP TABLE IF EXIST語句
--no-create-db 不輸出CREATE DATABASE語句
--no-create-info 不輸出CREATE TABLE語句
--databases 將後面的參數都解析爲庫名
--tables 第一個參數爲庫名 後續爲表名

==========================================================================應用舉例 引用(http://blog.chinaunix.net/uid-16844903-id-3411118.html)

導出
  1. 導出全庫備份到本地的目錄

    mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --lock-all-tables --add-drop-database -A > db.all.sql
  2. 導出指定庫到本地的目錄(例如mysql庫)

    mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --databases mysql > db.sql
  3. 導出某個庫的表到本地的目錄(例如mysql庫的user表)

    mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --tables mysql user> db.table.sql
  4. 導出指定庫的表(僅數據)到本地的目錄(例如mysql庫的user表,帶過濾條件)

    mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --no-create-db --no-create-info --tables mysql user --where="host='localhost'"> db.table.sql
  5. 導出某個庫的全部表結構

    mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --no-data --databases mysql > db.nodata.sql
  6. 導出某個查詢sql的數據爲txt格式文件到本地的目錄(各數據值之間用"製表符"分隔)
    例如sql爲'select user,host,password from mysql.user;'

    mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 --skip-column-names -B -e 'select user,host,password from mysql.user;' > mysql_user.txt
  7. 導出某個查詢sql的數據爲txt格式文件到MySQL服務器.
    登陸MySQL,將默認的製表符換成逗號.(適應csv格式文件).
    指定的路徑,mysql要有寫的權限.最好用tmp目錄,文件用完以後,再刪除!

    SELECT user,host,password FROM mysql.user INTO OUTFILE '/tmp/mysql_user.csv' FIELDS TERMINATED BY ',';
導入
  1. 恢復全庫數據到MySQL,由於包含mysql庫的權限表,導入完成須要執行FLUSH PRIVILEGES;命令

    第一種方法:
    mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 < db.all.sql
    
    第二種方法:
    登陸MySQL,執行source命令,後面的文件名要用絕對路徑.
    ......
    mysql> source /tmp/db.all.sql;
  2. 恢復某個庫的數據(mysql庫的user表)

    第一種方法:
    mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 mysql < db.table.sql
    
    第二種方法:
    登陸MySQL,執行source命令,後面的文件名要用絕對路徑.
    mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
    ......
    mysql> use mysql;
    mysql> source /tmp/db.table.sql;
  3. 恢復MySQL服務器上面的txt格式文件(須要FILE權限,各數據值之間用"製表符"分隔)

    mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
    ......
    mysql> use mysql;
    mysql> LOAD DATA INFILE '/tmp/mysql_user.txt' INTO TABLE user ;
  4. 恢復MySQL服務器上面的csv格式文件(須要FILE權限,各數據值之間用"逗號"分隔)

    mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
    ......
    mysql> use mysql;
    mysql> LOAD DATA INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ',';
  5. 恢復本地的txt或csv文件到MySQL

    mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
    ......
    mysql> use mysql;
    # txt
    mysql> LOAD DATA LOCAL INFILE '/tmp/mysql_user.csv' INTO TABLE user;
    # csv
    mysql> LOAD DATA LOCAL INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ',';

注意事項

  1. 關於MySQL鏈接
    -u$USER 用戶名
    -p$PASSWD 密碼
    -h127.0.0.1 若是鏈接遠程服務器,請用對應的主機名或者IP地址替換
    -P3306 端口
    --default-character-set=utf8 指定字符集

  2. 關於mysql參數
    --skip-column-names 不顯示數據列的名字
    -B 以批處理的方式運行mysql程序.查詢結果將顯示爲製表符間隔格式.
    -e 執行命令後,退出

  3. 關於mysqldump參數
    -A 全庫備份
    --routines 備份存儲過程和函數
    --default-character-set=utf8 設置字符集
    --lock-all-tables 全局一致性鎖
    --add-drop-database 在每次執行建表語句以前,先執行DROP TABLE IF EXIST語句
    --no-create-db 不輸出CREATE DATABASE語句
    --no-create-info 不輸出CREATE TABLE語句
    --databases 將後面的參數都解析爲庫名
    --tables 第一個參數爲庫名 後續爲表名

  4. 關於LOAD DATA語法若是LOAD DATA語句不帶LOCAL關鍵字,就在MySQL的服務器上直接讀取文件,且要具備FILE權限.若是帶LOCAL關鍵字,就在客戶端本地讀取數據文件,經過網絡傳到MySQL.LOAD DATA語句,一樣被記錄到binlog,不過是內部的機制.

相關文章
相關標籤/搜索