导出某个数据库数据到文件中
假设要导出test这个数据库,那么可以在Linux命令行(不是在mysql中)
[root@ubuntu /data]# mysqldump -uroot -p test > test.sql
上面的操作是将test数据库中的所有表导出到一个test.sql,包含表结构和数据。导出的时候,文件名可以随意指定,默认是存到当前路径下。
利用导出的文件恢复数据
在恢复数据之前,请事先创建好要保存数据的数据库,该数据库的名称不需要和原来的数据库名称相同,名称随意,这里假设是创建一个newTest数据库。在mysql中创建数据库执行。
mysql > create database newTest;
方式1:
直接在Linux的命令行中指定,注意 ‘<' 的左边是新创建的数据库名,右边是之前导出的sql文件:
[root@ubuntu /data]# mysql -uroot -p newTest < test.sql
方式2:
可以在登录到mysql服务器中,使用use指定新创建的数据库,然后使用source test.sql将数据导入:
[root@ubuntu /data]# mysql -uroot -p
# 登录到mysql服务器
mysql > use newTest;
mysql > source /data/test.sql
# 完成
将查出的结果导出到文件中
mysql> select * from demo into outfile '/data.txt';
注意:保存数据的sql文件的路径需要明确指定,方便查找。
这种方式导出的只是内容,没有字段等信息,全是一行一行的记录。并且默认的字段间分隔使用的是制表符,当然也可以自定义分隔符,以及使用使用什么符号将每个字段的内容括起来,以及换行符。
比如下面这样:
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/runoob.txt'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
将查出来的数据直接直接导入到一个数据库
其实使用的就是复制
mysql > create table dbName.tableName as (
select tb_a.id,tb_b.name,tb_c.age from tb_a,tb_b,tb_c
);