导出数据的方法:
一、select into outfile
将表数据导出到一个文本文件最简单的方法是使用select...into outfile语句的查询结果直接导出到OS层面上的文件中。
该语句默认的列于列之间的分隔符为tab,行与行之间的数据分隔符为换行符,通过参数可以改变分隔符:
fields terminated by '';
lines terminated by '';
注意:
用户必须要有file权限才能执行该语句;
由mysql服务器直接创建输出文件,输出文件必须不存在;
示例:
mysql> select * from jiang into outfile '/tmp/jiang.txt';
[root@jiang tmp]# cat jiang.txt
0 ling
1 ni
2 ai
3 zhou
4 jiang
5 wo
mysql> select * from jiang into outfile '/tmp/jiang.txt'
-> fields terminated by '#*#';
[root@jiang tmp]# cat jiang.txt
0#*#ling
1#*#ni
2#*#ai
3#*#zhou
4#*#jiang
5#*#wo
二、mysqldump命令
mysqldump命令是逻辑备份中使用的命令,但是更常用mysqldump来导出一张表的数据。
常用格式:
导出一张完整的表(建表语句和表数据在同一文件中):
mysqldump -u** -p** db_name tb_name > filename
mysqldump -u** -p** --single-transaction db_name --tables tb >file
导出一个或多个表(表结构和表数据分离)
mysqldump -u** -p** -T directory --fields-terminated-by '*' db [tb];
导入数据的方法
一、Load data
在
mysql中创建一个新表,然后通过一个文件将表的数据导入到这个表中,而不用再手工通过insert输入。
Load data
完整语法:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
#文件每一行的字段分隔符
[TERMINATED BY 'string']
#指明每一行的字段分隔符是什么
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
#文件中行与行之间的分隔符,默认回车
[STARTING BY 'string']
#指明行之间的分隔符是什么
[TERMINATED BY 'string']
]
Load data
示例:
创建一个新表
shi,文件shi在/mydata目录下,将/mydata/shi文件的数据导入到表shi中。
mysql> load data infile '/mydata/shi' into table shi fields terminated by ',';
Query OK, 83 rows affected (0.04 sec)
Records: 83 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select count(*) from shi;
+----------+
| count(*) |
+----------+
| 83 |
+----------+
二、mysqlimport
mysqlimport是mysql的一个载入数据的一个非常有效的工具,有两个参数以及大量的选项可供选择。作用就是将纯数据的文本文件导入到指定的数据库和表中。
基本用法:
mysqlimport -u** -p** db_name data_file
注意:
要导入的数据文件data_file必须要在对应的数据库的目录下
常用选项:
-d or --delete 新数据导入表前删除表中原来的数据
-f or --force 不管是否遇到错误,都将强制插入数据
-i or --ignore 跳过或者忽略那些有相同唯一关键字的行
-l or --lock-tables 数据插入前锁住表
-r or --replace 与-i相反,此选项将替代表中有相同唯一关键字的记录