MySQL基础之 导出导入之文本文件

Posted 峰哥ge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL基础之 导出导入之文本文件相关的知识,希望对你有一定的参考价值。

1、使用SELECT.......INTO  OUTFILE导出文本文件

该文件被创建在服务器主机上,因此必须有文件写入权限(FILE权限),才能使用此语法

语法:

select columnlist  from Table WHERE condition  into outfile filename [OPTIONS]
fields terminated by VALUE
fields [OPTIONALLY]  ENCLOSED BY VALUE
fields ESCAPED BY VALUE
lines STARTING by VALUE
lines terminated by VALUE

[OPTIONS]部分为可选参数,[OPTIONS]部分的语法包括FILED和LINES子句,其可能取值为:

● fields子句:在FIELDS子句中有三个子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。

如果指定了FIELDS子句,则这三个子句中至少要指定一个。
(1)TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ‘,‘”指定了逗号作为两个字段值之间的标志,默认为“ ”制表符。
(2)ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ‘ " ‘”表示文件中字符值放在双引号之间,

若加上关键字OPTIONALLY表示所有的值都放在双引号之间,则只有CHAR和VARCHAR等字符数据字段被包括。

(3)ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY ‘*‘”将“*”指定为转义字符,取代“”,如空格将表示为“*N”。
● LINES子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED BY ‘?‘”表示一行以“?”作为结束标志,默认值为“ ”。

LINES STARTING BY ‘‘表示每行数据开头的字符,可以为单个或多个,默认不是有任何字符

如果在导出的时候没有制定OPTIONS的参数,导入表的时候也不用指明这些参数。

注意:这个SELECT命令导出文本文件有限制,就是想要在服务器主机之外的部分客户主机上创建结果文件,不能使用此参数。应该使用“mysql  -e”命令。(就是我们使用客户端连接远程的服务器端的操作,怪不得TIDB数据库不支持这个命令导出数据)

2、使用“mysql  -e”命令导出文本文件.

这个就是说我们可以在命令模式下执行SQL指令,将查询结果导入到一个类似与csv格式的文本文件中。

mysql -u root -p --execute="SELECT * from tablename" dbname >filename.txt

上面的select语句必须使用双引号引起来。导出的数据使用制表符分割了。

3、使用LOAD   DATA  INFILE方式导入文本文件

LOAD DATA [LOCAL] INFILE ‘filename‘ INTO TABLE dataname.tablename [OPTION] [IGNORE number LINES]
fields terminated by VALUE
fields [OPTIONALLY]  ENCLOSED BY VALUE
fields ESCAPED BY VALUE
lines STARTING by VALUE
lines terminated by VALUE

● fields子句:在FIELDS子句中有三个子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。

如果指定了FIELDS子句,则这三个子句中至少要指定一个。
(1)TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ‘,‘”指定了逗号作为两个字段值之间的标志,默认为“ ”制表符。
(2)ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ‘ " ‘”表示文件中字符值放在双引号之间,

若加上关键字OPTIONALLY表示所有的值都放在双引号之间,则只有CHAR和VARCHAR等字符数据字段被包括。

(3)ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY ‘*‘”将“*”指定为转义字符,取代“”,如空格将表示为“*N”。
● LINES子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED BY ‘?‘”表示一行以“?”作为结束标志,默认值为“ ”。

LINES STARTING BY ‘‘表示每行数据开头的字符,可以为单个或多个,默认不是有任何字符.




以上是关于MySQL基础之 导出导入之文本文件的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 之 导出导入数据

MySQL之IDE工具介绍及数据备份(数据库导入,导出)

Mysql 之导入导出

mysql文件保存的sql脚本打开之后所有中文字符显示乱码怎么解决?

MongoDB基础之八 备份与恢复

日常系列之mysql数据导入与导出