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,不过是内部的机制.

相关文章
相关标签/搜索