暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL数据导入和导出2

原创 bingo 2023-03-06
277

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



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论