导出数据
方式一:mysqldump 命令
mysqldump 除了导出 SQL 语句以外,也支持导出文本数据格式。导出到 mysqld 所在的机器。
该命令导出的文本格式其实也是对 SELECT INTO OUTFILE 的一个包装(下面会提到)。
基本使用方式
mysqldump --column-statistics=0 -P 3306 -u [root] -p -T [pathname] database [tables]
选项说明
选项 | 选项说明 |
--column-statistics | Add an ANALYZE TABLE statement to regenerate any existing column statistics. (使用高版本 mysqldump 去操作低版本 mysqld,不加该选项可能报错) |
-P, --port=# | Port number to use for connection. (端口号) |
-u, --user=name | User for login if not current user. (用户名) |
-p, --password[=name] | Password to use when connecting to server. If password is not given it's solicited on the tty. (密码,没有指定则会从终端获取) |
-T, --tab=name | Create tab-separated textfile for each table to given path. (Create .sql and .txt files.) NOTE: This only works if mysqldump is run on the same machine as the mysqld server. (指定一个路径,创建文本文件,但是该命令仅当 mysqldump 与 mysqld 在同一台机器时有效。也就是说,该参数的 pathname 必须是本地路径) |
方式二:SELECT ... INTO OUTFILE ...
使用该语句将数据表的数据以特定格式导出到本机。该方式需要登录 mysql 客户端才可以执行。
注意:
1. 这种方式只能将表的记录导出到服务器所在机器,不能在远程连接的情况下导出到本地!!!也就是说,下面的 filepath 应该是 MySQL 所在的机器的路径。
2. 该导出受制于 --secure-file-priv 选项
语法格式:
SELECT <columnlist> FROM <table_name> WHERE condition
INTO OUTFILE <filepath> [OPTIONS]
例子:
select * from table01 into outfile '/var/lib/mysql/table01.txt';
<filepath>:必须是一个文件的绝对路径,不是目录,且在 windows 需要注意双斜杠转义。
导入数据
LOAD DATA INFILE ...
与 SELECT INTO OUTFILE 一样,该语句也只能引用来自本机器的文件。
语法格式:
LOAD DATA INFILE 'filename.txt' INTO TABLE tbname [OPTIONS] [IGNORE number LINES]
例子:
load data infile '/var/lib/mysql/table01.txt' into table test.table01;