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基础之 导出导入之文本文件的主要内容,如果未能解决你的问题,请参考以下文章