使用mysqldmp导出数据为文本的具体语法如下:
mysqldump -u username -T target_dir dbname tablename [option]
其中option参数可以是以下选项:
- --fields-terminated-by=name(设置字段之间的分隔符,可以为单个或多个字符,
默认情况下为制表符“\t”);
- --fields-enclosed-by=name(设置字段的包围字符);
- --fields-optionally-enclosed-by=name(设置字段的包围字符,只能为单个字符,
只用在char、varchar和text等字符型字段上);
- --fields-escaped-by=name(控制如何写入或读取特殊字符,只能为单个字符,即
设置转义字符,默认值为反斜线“\”);
- --lines-terminated-by=name(设置每行数据结尾的字符,可以为单个或多个字
符,默认值为“\n”);
下面是mysqldump生成了指定分隔符的文本:
[root@mysqltest 3306]# mysqldump -uroot -p -T /tmp sakila actor --fields-terminated-by ',' --fields-optionally-enclosed-by '"'
可以看到除了生成一个actor.txt之外,还有一个actor.sql文件,里面是记录actor表的创建脚本。
可以发现,除多了一个表的创建脚本文件外,mysqldump和select ...INTO OUTFILE...的选项和语法非常类似,其实,mysqldump实际调用的就是后者提供的接口,并在其上面添加了一些新的功能而已。
数据导入:
方法一
使用“LOAD DATA INFILE。。。”命令,具体语法如下。
LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE tablename [option]
[IGNORE number LINES]
option可以是以下选项:
- FIELDS TERMINATED BY 'string'(设置字段之间的分隔符,可以为单个或多个
字符,默认为制表符'\t');
- FIELDS [OPTIONALLY] ENCLOSED BY 'char'(设置字段的包围字符,只能为单
个字符,如果加OPTIONALLY选项则只用在char、varchar和text等字符型字段
上,默认不适用引用符);
- FIELDS ESCAPED BY 'string'(控制如何写入或读取特殊字符,只能为单个字
符,即设置转义字符,默认'\');
- LINES STARTING BY 'string' (设置每行数据开头的字符,可以为单个或多个字
符,默认情况下不使用任何字符);
- LINES TERMINATED BY 'string'(设置每行数据结尾的字符,可以为单个或多个
字符,默认为'\n');
- IGNORE number LINES(忽略输入文件中的前n行数据);
(col_name_or_user_var,...)(按照列出的字段顺序和字段数量加载数据);
SET col_name=expr,...将列做一定的数值转换后再加载。
其中char表示此符号只能是单个字符,string表示可以是字符串。
1.将上次导出的/tmp/actor.txt文件导入到actor表中(actor表可以不存在,会自动创建)。
(root@localhost) [bingo]>load data infile '/tmp/actor.txt' into table actor fields terminated by ',' enclosed by '"';
2.如果不希望加载文件中的前10行,可以进行如下操作:
(root@localhost) [bingo]>load data infile '/tmp/actor.txt' into table actor fields terminated by ',' enclosed by '"' ignore 10 lines;
3.如果发现文件中的列顺序和表中的列顺序不符,或者只想加载部分列,可以在命令行中加上列的顺序。
(root@localhost) [bingo]>load data infile '/tmp/actor.txt' into table actor fields terminated by ',' enclosed by '"' ignore 10 lines(actor_id,last_name,first_name ,last_update);
4.如果希望actor_id列的内容加上10后再加载到表中。
(root@localhost) [bingo]>load data infile '/tmp/actor.txt' into table actor fields terminated by ',' enclosed by '"' ignore 10 lines set actor_id=actor_id+10;




