MySQL之导入导出

来源:互联网 发布:java开发者论坛 编辑:程序博客网 时间:2024/06/07 03:03

导出到文本文件


使用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);

 

参考文献


学习MySQL中导入导出CSV

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


MySQL之导入导出

http://blog.csdn.net/liuyuan185442111/article/details/42794359

0 0
原创粉丝点击