mysql数据库LOAD DATA INFILE Syntax
1.LOAD DATA INFILE用来把一个文本文件里的内容高速写入到MySQL表里,它和SELECT ... INTO FILE的操作是对应的,一个导入、一个导出。使用LOAD DATA INFILE需要MySQL对要导入的文件有读权限,其语法如下:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]
SELECT ... INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
FROM TABLE_NAME;
select * into outfile 'xxx.txt' CHARACTER SET utf8 FIELDS TERMINATED BY ',' from emails1;
[LOW_PRIORITY | CONCURRENT]
LOW_PRIORITY: 当加上此选项时,执行LOAD DATA命令将会被延迟,直到没有没有任何其它客户端读取目标表。LOW_PRIORITY选项只适用于表级锁的存储引擎(MyISAM、MEMORY、MERGE等)。
CONCURRENT: 并行的意思,如果指定该选项,意味着在LOAD DATA过程中,别人也可以读取表里的信息。如果使用CONCURRENT选项,不管有没有人在LOAD DATA过程中读取目标表,都是对LOAD DATA的性能造成一定的影响。对于基于行级别的Replication,CONCURRENT选项在MySQL 5.5.1以前不可用。
[LOCAL]
LOCAL选项决定LOAD DATA文件的位置以及LOAD DATA过程中出错后的处理方式。
如果参数--local-infile=0,那么LOCAL参数不可用。
加上LOCAL选项后,在LOAD DATA的时候,客户端读取文件,并发送给服务端,该文件会临时存储在服务端的临时文件夹下(系统临时文件夹下,而非MySQL服务的临时文件夹,不是tmpdir、slave_load_tmpdir所指定的文件夹)。
使用LOCAL选项,LOAD DATA的速度会稍微慢一点。
如果不加LOCAL选项,当发生数据错误或者主键重复、唯一索引重复的时候,LOAD DATA将会中断,而加上LOCAL后,将不会中断,关于加上LOCAL后遇到上述错误的处理方式,看下面的IGNORE选项中的解释。
关于文件的路径问题:
1、如果指定了LOCAL选项,则被导入的文件可以在客户端、也可以在服务端,如果没有指定LOCAL,则被导入的文件必须在服务端;
2、我们尽量使用绝对路径来标识被导入的文件。如果我们使用了相对路径:
a)在指定LOCAL选项的情况下,相对路径指向客户端所在的目录;
b)在没有指定LOCAL的选项下,相对路径指向数据文件所在目录或MySQL服务默认库所在目录;
--> 如果该相对路径是’./a.txt’,那么指向数据文件所在目录;
-->如果该相对路径是’a.txt’,那么指向MySQL服务默认库所在目录;
[REPLACE | IGNORE]
REPLACE: 在导入过程中遇到重复的行、与主键或唯一索引重复的行,将被替换掉
IGNORE: 在导入过程中遇到重复的行、与主键或唯一索引重复的行,会跳过并继续导入
在没有指定REPLACE和IGNORE的情况下,当遇到上述情况时,处理方法取决于是否指定了LOCAL选项:
如果没有指定LOCAL,则会中断导入操作;
如果指定了LOCAL,遇到上述情况时按照IGNORE参数处理。
如果想要忽略外键对LOAD DATA的影响,可以在导入前设置参数:SET foreign_key_checks = 0
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
FIELDS 用于定义文件的分割字段
TERMINATED BY:定义字段分隔符
ENCLOSED BY:定义字段括起字符,比如:”WYZC”,则ENCLOSED BY ‘”’
[OPTIONALLY]:有选择行的,如果加上此选项,则数字类型不加引号,其它类型的加引号
ESCAPED BY:定义转义字符
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
LINES定义每行的分割字段
STARTING BY:定义每行从哪个字段开始读取
TERMINATED BY:定义每行的终止符
如果没有指定FIELDS或者LINES,则默认是:
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''
[IGNORE number {LINES | ROWS}]
IGNORE number LINES选项可被用来忽略在文件开始的一个列名字的头:
LOAD DATA INFILE和SELECT ... INTO OUTFILE的一些Tips:
对于LOAD DATA INFILE和SELECT ... INTO OUTFILE,参数FIELDS和LINES必须一致,如果同时指定这2个参数,那么FIELDS必须在LINES之前。
对于一个MyISAM空表,对于表里面的非唯一性索引,在导入的时候会分批次创建,这样会加快LOAD DATA的速度。
有时候我们可以在导入前禁用一个表的索引,导入完成后再ENABLE该表的索引以加快LOAD DATA的速度。
从MySQL 5.6.2开始,LOAD DATA支持分区表的导入。
当你与LOAD DATA INFILE一起使用SELECT ... INTO OUTFILE将一个数据库的数据写进一个文件并且随后马上将文件读回数据库时,两个命令的字段和处理选项必须匹配,否则,LOAD DATA INFILE将不能正确解释文件的内容。假定你使用SELECT ... INTO OUTFILE将由逗号分隔的字段写入一个文件:
mysql数据库LOAD DATA INFILE Syntax的更多相关文章
- Mysql 命令 load data infile 权限问题
[1]Mysql命令load data infile 执行权限问题 工作中,经常会遇到往线上环境mysql数据库批量导入源数据的场景. 针对这个场景问题,mysql有一个很高效的命令:load dat ...
- MySQL中load data infile将文件中的数据批量导入数据库
有时候我们需要将文件中的数据直接导入到数据库中,那么我们就可以使用load data infile,下面具体介绍使用方法. dao中的方法 @Autowired private JdbcTemplat ...
- mysql文件导入到数据库load data infile into table 的使用例子
load data infile "C:/Users/Administrator/Desktop/1.txt"into table 要一个已经存的表名 字段默认用制表符隔开 文件 ...
- MySQL 之 LOAD DATA INFILE 快速导入数据
SELECT INTO OUTFILE > help select; Name: 'SELECT' Description: Syntax: SELECT [ALL | DISTINCT | D ...
- mysql 的load data infile
LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中.如果指定LOCAL关键词,从客户主机读文件.如果LOCAL没指定,文件必须位于服务器上.(LOCAL在MySQL3.22. ...
- 利用mysql的LOAD DATA INFILE的功能读取客户端文件
前言:今天在浏览某知论坛时,看到某大佬在渗透过程中使用伪造的MySQL服务端读取客户端文件,此大佬在利用过程中描述得不是很详细,作为小白的我看不懂啊,由此产生了此篇文章. 某大佬文章:https:// ...
- mysql 的load data infile要使用
LOAD DATA INFILE从文本文件中读出的声明以极高的速度到表. 1.基本语法 LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'fi ...
- mysql中load data Infile运用
速度比insert要快20倍.共享一下java程序操作. package com.mysql.csv; import java.sql.Connection; import java.sql.Driv ...
- MySQL通过 LOAD DATA INFILE 批量导入数据
LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境 // 定义文件路径$file_path = 'LOAD_DATA_LOCAL_INFILE.tx ...
随机推荐
- ASP.NET四种页面导航方式之比较与选择
一.超级链接 从一个表单进入另一个表单最简单的方式是使用HTML超级链接控件.在Web表单中,使用超级链接的HTML代码类如: <a href="WebForm2.aspx" ...
- Windoows窗口程序四
子窗口的创建 .创建时要设置父窗口句柄 .创建风格要增加WS_CHILD|WS_VISIBLE HWND CreateChild(LPSTR lpClassName,LPSTR lpWndName,H ...
- 微信绑定用户服务端代码-根据code获取openId然后绑定用户
目录结构: isa.qa.core.weixin.message.resp包和isa.qa.core.weixin.util包中为微信绑定的工具类,就不一一贴出代码,详见附件,下载地址: http:/ ...
- iOS 数据压缩与解压
转自: http://blog.csdn.net/dkq972958298/article/details/53321804 在实际开发中,我们经常要对比较大的数据进行压缩后再上传服务器,下面是我在项 ...
- ubuntu server install 安装中文(搜狗)输入法
1.对于ubuntu server默认无中文输入法框架,我比较倾向于我一直使用的ibus-sunpinyin.这里我需要先安装ibus的框架 不过我遇到了问题: dpkg: dependency pr ...
- Unity3D工程源码目录
2-0 暗黑破坏神3 链接:http://pan.baidu.com/s/1dEAUZoX 密码:cly4 2-1 炉石传说 客户端加服务器端 链接:http://pan.baidu.co ...
- VS 最近打开清理bat
VS2008RecentCleaner.bat @echo off @REG Delete HKCU\Software\Microsoft\VisualStudio\9.0\FileMRUList / ...
- 关于 MVVMLight 设计模式系列
MVVM设计模式你可以在WPF.Silverlight.Windows Phone开发中使用,我想至今已经有非常非常多的朋友正在使用MVVM设计模式,尤其是MVVMLight . 本系列文章以WPF举 ...
- ASIHttpRequest封装
ASIHttpRequest是一个非常好的库,只是直接使用稍嫌麻烦,以下就尝试来封装一下吧. 思路:每次请求时,须要创建一个ASIHttpRequest对象,设置它的属性(url,delegate.p ...
- Spring装配Bean的过程补充
对上一篇的<Spring装配Bean的过程>的过程说一下,不然真产生了误区. 误区在哪里呢?那就是spring bean的作用域问题. 说哈常用的两种作用域:默认是scope = sing ...