load的语法

复制代码 代码如下:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'

[REPLACE | IGNORE]

INTO TABLE tbl_name

[FIELDS

[TERMINATED BY 'string']

[[OPTIONALLY] ENCLOSED BY 'char']

[ESCAPED BY 'char' ]

]

[LINES

[STARTING BY 'string']

[TERMINATED BY 'string']

]

[IGNORE number LINES]

[(col_name_or_user_var,...)]

[SET col_name = expr,...)]

LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。

由character_set_database系统变量指示的字符集被用于解释文件中的信息。SET NAMES和character_set_client的设置不会影响对输入的解释。

典型的示例

复制代码 代码如下:

LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl_name

FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n'

如果您只想载入一个表的部分列,则应指定一个列清单:

复制代码 代码如下:

LOAD DATA LOCAL INFILE 'persondata.txt' INTO TABLE persondata (col1,col2);

文件的路径

如果指定了LOCAL,则被认为与连接的客户端有关:

1.如果指定了LOCAL,则文件会被客户主机上的客户端读取,并被发送到服务器。文件会被给予一个完整的路径名称,以指定确切的位置。如果给定的是一个相对的路径名称,则此名称会被理解为相对于启动客户端时所在的目录。

2.如果LOCAL没有被指定,则文件必须位于服务器主机上,并且被服务器直接读取。

当在服务器主机上为文件定位时,服务器使用以下规则:

1).如果给定了一个绝对的路径名称,则服务器使用此路径名称。

2).如果给定了带有一个或多个引导组件的相对路径名称,则服务器会搜索相对于服务器数据目录的文件。

3).如果给定了一个不带引导组件的文件名称,则服务器会在默认数据库的数据库目录中寻找文件。

注意,这些规则意味着名为./myfile.txt的文件会从服务器数据目录中被读取,而名为myfile.txt的同样的文件会从默认数据库的数据库目录中读取。

从客户端使用绝对路径load数据

复制代码 代码如下:

LOAD DATA LOCAL INFILE '/import/data.txt' INTO TABLE db2.my_table;

从服务器里使用相对路径load数据

下面的LOAD DATA语句会从db1数据库目录中读取文件data.txt,因为db1是当前数据库。即使语句明确把文件载入到db2数据库中的表里,也会从db1目录中读取。

复制代码 代码如下:

USE db1;

LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;

IGNORE number LINES选项

IGNORE number LINES选项可以被用于在文件的开始处忽略行。

您可以使用IGNORE 1 LINES来跳过一个包含列名称的起始标题行:

复制代码 代码如下:

LOAD DATA INFILE '/tmp/test.txt'  INTO TABLE test IGNORE 1 LINES;

REPLACE和IGNORE

有些输入记录把原有的记录复制到唯一关键字值上。REPLACE和IGNORE关键字用于控制这些输入记录的操作。

如果您指定了REPLACE,则输入行会替换原有行(换句话说,与原有行一样,对一个主索引或唯一索引具有相同值的行)。

如果您指定IGNORE,则把原有行复制到唯一关键字值的输入行被跳过。

如果您这两个选项都不指定,则运行情况根据LOCAL关键词是否被指定而定。不使用LOCAL时,当出现重复关键字值时,会发生错误,并且剩下的文本文件被忽略。使用LOCAL时,默认的运行情况和IGNORE被指定时的情况相同;这是因为在运行中间,服务器没有办法中止文件的传输

索引的影响

如果您对一个空的MyISAM表使用LOAD DATA INFILE,则所有的非唯一索引会被创建在一个独立批中(对于REPAIR TABLE)。当您有许多索引时,这通常会使LOAD DATA INFILE大大加快。通常,LOAD DATA INFILE的速度会非常快,但是在某些极端情况下,您可以在把文件载入到表中之前使用ALTER TABLE...DISABLE KEYS关闭LOAD DATA INFILE,或者在载入文件之后使用ALTER TABLE...ENABLE KEYS再次创建索引,使创建索引的速度更快。

FIELDS和LINES的默认值

如果您不指定FIELDS子句,则默认值为假设您写下如下语句时的值:

复制代码 代码如下:

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'

如果您不指定LINES子句,则默认值为假设您写下如下语句时的值:

复制代码 代码如下:

LINES TERMINATED BY '\n' STARTING BY ''

换句话说,当读取输入值时,默认值会使LOAD DATA INFILE按如下方式运行:

复制代码 代码如下:

在新行处寻找行的边界。

不会跳过任何行前缀。

在制表符处把行分解为字段。

不希望字段被包含在任何引号字符之中。

出现制表符、新行、或在‘\'前有‘\'时,理解为作为字段值一部分的文字字符。

相反的,当编写输出值时,默认值会使SELECT...INTO OUTFILE按如下方式运行:

复制代码 代码如下:

在字段之间写入制表符。

不把字段包含在任何引号字符中。

当字段值中出现制表符、新行或‘\'时,使用‘\'进行转义。

在行的末端写入新行。

注意,要写入FIELDS ESCAPED BY ‘\\',您必须为待读取的值指定两个反斜杠,作为一个单反斜杠使用。

备注:如果您已经在Windows系统中生成了文本文件,您可能必须使用LINES TERMINATED BY ‘\r\n'来正确地读取文件,因为Windows程序通常使用两个字符作为一个行终止符。部分程序,当编写文件时,可能会使用\r作为行终止符。要读取这样的文件,应使用LINES TERMINATED BY ‘\r'。

STARTING  LINES选项

如果所有您希望读入的行都含有一个您希望忽略的共用前缀,则您可以使用'prefix_string'来跳过前缀(和前缀前的字符)。如果某行不包括前缀,则整个行被跳过。注释:prefix_string会出现在一行的中间。

以下面的test.txt为文件源

复制代码 代码如下:

xxx"row",1

something xxx"row",2

使用以下sql导入数据

复制代码 代码如下:

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test LINES STARTING BY "xxx";

最后并只得到数据("row",1)和("row",2)。

TERMINATED LINES选项

如果jokes被由%%组成的行分隔,要读取包含jokes的文件,您可以这么操作:

复制代码 代码如下:

LOAD DATA INFILE '/tmp/jokes.txt' INTO TABLE jokes FIELDS TERMINATED BY '' LINES TERMINATED BY '\n%%\n' (joke);

TERMINATED,ENCLOSED,ESCAPED FIELD选项

TERMINATED用于控制字段的分隔符,可以为多个字符。

ENCLOSED BY用于用于控制字段的引号,必须为单一字符,如果您忽略了词语OPTIONALLY,则所有的字段都被包含在ENCLOSED BY字符串中,如果您指定了OPTINALLY,则ENCLOSED BY字符只被用于包含具有字符串数据类型(比如CHAR, BINARY, TEXT或ENUM)的列中的值.

SELECT...INTO OUTFILE导出数据,ENCLOSED BY '"',忽略OPTIONALLY

复制代码 代码如下:

"1","a string","100.20"

SELECT...INTO OUTFILE导出数据,ENCLOSED BY '"',指定OPTIONALLY

复制代码 代码如下:

1,"a string",100.20

ESCAPED BY用于转义,FIELDS ESCAPED BY值必须为单一字符。

如果FIELDS ESCAPED BY字符为空字符,则没有字符被转义,并且NULL被作为NULL输出,而不是\N。去指定一个空的转义符不是一个好办法,特别是如果数据的字段值包含任何刚给定的清单中的字符时,更不能这么做。

如果在字段值内出现ENCLOSED BY字符,则通过使用ESCAPED BY字符作为前缀,对ENCLOSED BY字符进行转义。

mysql load escaped_MySQL load语句详细介绍相关推荐

  1. 【MySQL基础教程】DML语句详细介绍

    前言 本文为 [MySQL基础教程]DML语句详细介绍 相关知识,DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增.删.改操作.下 ...

  2. php mysql explain_Mysql分析-explain的详细介绍

    为什么要了解explain: 想了解select查询的内部情况,查询优化器是如何工作的,是否使用到了索引,explain可以做到. MySQL查询优化器是如何工作的 : MySQL查询优化器有几个目标 ...

  3. Canal Mysql binlog 同步至 ElasticSearch 详细介绍

    文章目录 数据同步ElasticSearch 单表基本配置 适配器映射文件详细介绍(单表.多表映射介绍) 单表映射索引示例sql 单表映射索引示例sql带函数或运算操作 多表映射(一对一, 多对一)索 ...

  4. mysql innodb 锁类型_详细介绍MySQL InnoDB存储引擎各种不同类型的锁

    本文中,我们详细介绍MySQLInnoDB存储引擎各种不同类型的锁,以及不同SQL语句分别会加什么样的锁. 阅读提示 1.本文所参考的MySQL文档版本是8.0,做实验的MySQL版本是8.0.13 ...

  5. 【MySQL基础教程】DDL语句详细介绍

    前言 本文为 [MySQL基础教程]DDL语句 相关内容进行介绍,下边将对数据库操作(包括:查询所有数据库.查询当前数据库.创建数据库.删除数据库.切换数据库等),表操作(包括:查询创建.数据类型.修 ...

  6. 【MySQL基础教程】DQL语句详细介绍

    前言 本文为 [MySQL基础教程]DQL语句 相关内容介绍,下边具体将对DQL语句基本语法,基础查询,条件查询,聚合函数,分组查询,排序查询,分页查询,相关案例,执行顺序等进行详尽介绍~

  7. mysql 中show 命令用法详细介绍 mysql过程(procedure)的使用

    a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称 b. show databases; -- 显示mysql 中所有数据 ...

  8. Mysql Binlog三种格式详细介绍

    binlog 的不同模式有什么区别呢? 1.Statement:每一条会修改数据的sql都会记录在binlog中. 优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能.(相比 ...

  9. 【MySQL基础教程】事务详细介绍

    前言 本文为 [MySQL基础教程]事务 相关知识,下边将对事务简介,事务操作(包括:未控制事务,控制事务),事务四大特性,并发事务问题,事务隔离级别等进行详尽介绍~

最新文章

  1. 一个推荐系统,实现完整的设计-在百度搜索关键词推荐案例
  2. 微软推出 AI 开发免费电子书,手把手教你构建智能聊天机器人
  3. EF框架对数据库的操作
  4. 企业级GIS的演变(转)
  5. php代码优化 -- array_walk 和 foreach, for 的效率的比较
  6. html 加粗_若想学前端开发,要从HTML基本元素开始第一节
  7. 广东省那么发达,为什么还有全国贫困县?
  8. P3168 [CQOI2015]任务查询系统 主席树 + 差分
  9. std::set作为一个有序集合
  10. Java Object类的各个方法
  11. PMP项目管理学习心得分享
  12. 计算机视觉轮廓检测,轮廓检测
  13. 计算机双硬盘如何设置,电脑固态硬盘+机械硬盘双盘齐下的安装方法-双硬盘设置...
  14. 计算机模拟技术在高分子领域的应用,模拟技术的原理、方法及在高分子材料研究中的应用...
  15. J2SE 1.5的for增强循环
  16. w7提示无法关闭计算机,番茄花园windows7关闭电脑关机时提示强制关闭程序怎么办...
  17. MODIS 产品介绍
  18. 常见的爬虫error以及解决方法
  19. Java Web实现用户注册页面的提交
  20. SQL语句的一个面试题目

热门文章

  1. 面试:计算机网络基础详解(一)
  2. CAD中怎么画指北针?CAD画指北针教程
  3. WLAN与WiFi各是什么意思有什么区别
  4. Qt5实现可配置截图及基于百度OCR自动识别标题保存文件
  5. Python常用模块os——与操作系统交互
  6. Git 分支篇之分支介绍
  7. 链传动运动仿真(motion分析)制作包含源文件
  8. 《The Wiley Handbook of Human Computer Interaction》翻译(冰山一角)
  9. 手把手教你设计短信验证码
  10. 人脸实名认证实现方案(微信H5百度云篇)