文档章节

mysql笔记(一):简单的过程/视图/表状态/导入导出数据到文本/导入导出数据到sql文件

big_cat
 big_cat
发布于 2015/09/22 14:18
字数 1643
阅读 2769
收藏 2

过程/函数:

//显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程
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

视图:视图作为一张表的查询封装,可以很好的起到中间组件的作用,其实视图也是一张表,虚拟表

//创建视图
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

查看存储过程/函数/触发器/事件/视图

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

查看表状态:查看当前数据库或指定数据库的所有表的状态信息

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

查看数据库使用量

//每个数据库的信息图表
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 '"' 将字段包围 对数值型无效

LINES TERMINATED BY '\n' 换行符

mysql

1、导出数据 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'

2、导入数据 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,不过是内部的机制.


© 著作权归作者所有

big_cat
粉丝 49
博文 237
码字总数 162865
作品 0
长宁
后端工程师
私信 提问
MySQL管理工具HeidiSQL

HeidiSQL 是一个功能非常强大的 MySQL 客户端软件。它是德国程序员Ansgar Becker和几个Delphi程序员开发的一个开源工具。要通过HeidiSQL来管理数据库,用户应该用有效地凭证登陆到MySQL服务器...

2018/04/12
0
0
数据库管理客户端--HeidiSQL

HeidiSQL 是一个功能非常强大的数据库客户端软件,采用 Delphi 开发,支持 Windows 操作系统。支持 MySQL、MariaDB、Percona Server 和微软的 SQL Server。 特点: 免费开源 可在一个窗口中连...

匿名
2009/06/08
42.3K
9
mysql binlog 恢复

开始先执行每天自动备份的数据库 再使用binlog恢复 binlog直接恢复数据库,不建议直接使用 优先使用下面的,把binlog导出sql文件,看下没有问题再重新导入 恢复的数据不包含视图,视图需要另外使...

donald121
2018/08/11
21
0
mysql备份还原(视图、存储过程)

mysql备份还原(视图、存储过程) 最近在工作的时候,要将原来在本机开发的 MySQL存储过程迁往另一Linux操作系统下的MySQL数据库,因为表结构等已经在目标数据库中存在了,不想直接拷贝数据库...

kevin89
2012/09/10
828
0
mysql导入数据库时出现40101错误解决方法

导入错误:40101 SET @OLDCHARACTERSETCLIENT=@@CHARACTERSET 入的方法: mysqluse test; mysql source c:/test.sql 导入数据时,如果目标数据库或表是UTF-8字符集的,而导入SQL中有中文,可能...

lcdmusic
2015/12/22
183
0

没有更多内容

加载失败,请刷新页面

加载更多

Electron React Node

NPM配置手册https://cloud.tencent.com/developer/section/1490263 URL编码参考手册:https://www.w3cschool.cn/htmltags/html-urlencode.html 在配置React环境时,提示 npm ERR! code ECON......

DB_Terrill
13分钟前
3
0
Knative 实战:基于阿里云 Kafka 实现消息推送

在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何在阿里云上基于 Kafka 实现消息推送,本文给大家解锁这一新的姿势。 背景 消息队列 for Apache Kafka 是阿里云提供的分布式、高吞吐...

阿里云官方博客
13分钟前
3
0
自动评论csdn博客文章实现

正文 我们来用java代码爬取csdn博客网站,然后自动评论,这一波操作可以说是相当风骚了,话不多说,咱上代码。 第一步是登录代码,这个网上一大把,代码中用到了jsoup依赖包,用于解析html获...

码农实战
15分钟前
4
0
java速查手册Java Syntax Cheatsheet for Algorithms by TCXX

Numbers static MAX_VALUE xxxValue() public int compareTo(XXX) public boolean equals(Object o) static Integer valueOf(int i) static Integer valueOf(String s) static Integer value......

momo1987
23分钟前
3
0
vue Property or method "***" is not defined on the instance but referenced during render.报错

报错:title不是个方法 解决: 把:去掉不报错了

栾小糖
27分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部