导出到文本文件
使用SELECT... INTO OUTFILE和LOAD DATA INFILE语句,二者互为逆操作
导出
SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'
LINES TERMINATED BY '\r\n';
将导出为CSV格式文件。
csv文件的要点:
(1)字段之间以逗号分隔,数据行之间以\r\n分隔;
(2)字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。
输出不能是一个已存在的文件,mysql需要拥有对文件的创建权限。
导入
LOAD DATA LOCALINFILE 'dump.txt' INTO TABLE mytbl
FIELDS TERMINATED BY ':' OPTIONALLY ENCLOSED BY '"' ESCAPED BY'"'
LINES TERMINATED BY '\r\n';
如果指定LOCAL关键词,则表明从客户主机上按路径读取文件。如果没有指定,则文件在服务器上按路径读取文件。
你能明确地在LOADDATA语句中指出列值的分隔符和行尾标记,默认标记是制表符和换行符。
load data可以包含子句ignore number lines,跳过开头的number行。
Lines子句可以包含子句 Starting by 'string',它指定一个前缀,忽略本行该前缀与其之前的内容,如果改行不包含该前缀,则跳过整行。完整的lines子句应该是starting by … terminated by …。
要点
1.两个命令的FIELDS和LINES子句的语法是一样的。两个子句都是可选的,但是如果两个同时被指定,FIELDS子句必须出现在LINES子句之前。
2.如果用户指定一个FIELDS子句,它的子句(TERMINATED BY、[OPTIONALLY] ENCLOSED BY和ESCAPED BY)也是可选的,不过,用户必须至少指定它们中的一个。
3.enclosed by ‘”’表示文件中字符值放在双引号之间,若加上关键字optionally表示所有的值都放在双引号之间。
4.LOAD DATA 默认情况下是按照数据文件中列的顺序插入数据的,如果数据文件中的列与插入表中的列不一致,则需要指定列的顺序。如,在数据文件中的列顺序是a,b,c,但在插入表的列顺序为b,c,a,则数据导入语法如下:
LOAD DATA LOCALINFILE 'dump.txt'
INTO TABLE mytbl(b,c, a);
参考文献
http://blog.csdn.net/sara_yhl/article/details/6850107
导出作为原始数据
mysqldump是mysql用于转存数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令。
几个常用用例:
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名 > 导出的文件名
3.导出一个数据库结构,不含数据库内容
mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名
4.导入数据库
进入mysql数据库控制台,
mysql> use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql> source /tmp/wcnc_db.sql
5.导入数据库
也可以mysql-u root -p database_name < /tmp/dump.sql
参考文献
MySQL的mysqldump工具的基本用法
http://www.blogjava.net/Alpha/archive/2007/08/10/135694.html
http://blog.csdn.net/liuyuan185442111/article/details/42794359