load的语法

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

[REPLACE | IGNORE]

INTO TABLEtbl_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 TABLEtbl_name

FIELDS TERMINATEDBY ','OPTIONALLY ENCLOSEDBY '"'LINES TERMINATEDBY '\n'

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

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

文件的路径

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

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

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

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

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

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

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

注意,这些规则意味着名为./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目录中读取。

USEdb1;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",1something 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字符进行转义。

1、  可以用--local-infile=0选项启动mysqld从服务器端禁用所有LOAD DATA LOCAL命令。

即是在/etc/my.cnf的[mysqld]下面添加local-infile=0选项。

2、  对于mysql命令行的客户端,可以通指定--local-infile[=1]选项启用LOAD DATA LOCAL命令,

或通过--local-infile=0选项禁用。

类似地,对于mysqlimport,--local or -L选项启用本地数据库文件装载。在任何情况下,成功进行本地装载需要服务器启有相关选项。

当PHP设置权限后仍然不能够导入数据时:

因mysql 版本过低或者其他原因,mysql配置文件中设置了local_infile=1。通过查数据库 show variables like 'local_inile';mysql语句设置权限:set global local_infile = 1; 都没有效。

使用shell 操作mysql 导入

#!/bin/bashfile=$1table=$2query="LOAD DATA LOCAL INFILE '$file' INTO TABLE $table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (uid,name,score,home,ctime);"

echo 'file::'$file'
'

echo 'tbl::'$table'
'

/usr/local/services/mysql/bin/mysql --local-infile -h127.0.0.1 -P3600 -uroot -p123456 -e "$query"

mysql load data 语法_MySql LOAD DATA 使用相关推荐

  1. mysql load 指定字段_mysql load data部分字段的正确写法

    在日常运维中,会经常遇到将文件中数据导入到数据库中,如果是.sql文件,直接采用source方式即可:如果是.csv..txt文件,可以采用load data方式.这两种方式都十分熟悉,这里说一种特殊 ...

  2. mysql 非空语法_mysql从入门到优化(1)基本操作上

    这是数据库系列的第一篇文章,主要是对mysql的基本操作有一个了解.本系列的教程会先从基础出发,逐步过渡到优化. 一.前提 在这里我们不会从如何去安装数据库开始讲起,而是在安装完之后从操作数据库开始, ...

  3. mysql的insert语法_mysql insert 语法

    INSERT语法 INSERT [LOW_PRIORITY |DELAYED| HIGH_PRIORITY] [IGNORE] [INTO]tbl_name[(col_name,...)] VALUE ...

  4. mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)

    MySQL常用的语句语法 注意:1. | 符号用来指出几个选中中的一个,因此NULL | NOT NULL 表示给出null 或 not null 2.包含在方括号中的关键字或子句是可选的(如 [li ...

  5. mysql create database 语法_MySQL中CREATE DATABASE语法总结

    CREATE DATABASE是mysql创建数据库的命令. CREATE DATABASE的语法如下: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_n ...

  6. mysql 创建存储过程语法_mysql存储过程语法及实例

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程 c ...

  7. mysql创建用户语法_MySQL创建用户

    1.创建用户: 语法: create user 用户1@主机名 identified by '123'|password '' 123:*23AE809DDACAF96AF0FD78ED04B6A26 ...

  8. mysql创建视图语法_MySQL教程91-MySQL创建视图

    创建视图是指在已经存在的 MySQL 数据库表上建立视图.视图可以建立在一张表中,也可以建立在多张表中. 基本语法 可以使用 CREATE VIEW 语句来创建视图. 语法格式如下: CREATE V ...

  9. mysql 删除字段语法_mysql增添、修改、删除字段语法实例

    mysql增添.修改.删除字段语法实例 mysql 添加.修改.删除字段语法实例 sql alert 添加.修改.删除字段语法实例 alter table 的语法如下: alter table &qu ...

最新文章

  1. 办公word,ppt,excel问题
  2. js 文件不让通过地址访问_区块链与以太坊实战(5):访问以太坊节点的N中方式...
  3. 解决Excel打开UTF-8编码的CSV文件乱码的问题 实测好用
  4. Python大战C++,谁能更胜一筹?
  5. Delphi - 使用字符串时,一个注意地方
  6. 皮一皮:学霸和学渣的区别
  7. 高性能网站建设的14个原则
  8. ugly number
  9. python 按键精灵识图_利用-百度云通用文字识别-图片转文字
  10. 手机百度输入法的用户体验
  11. python 地址_python 解析地址 | 学步园
  12. MyBatis的XML配置文件(二)
  13. 雷电游戏java源代码,java雷电游戏源码项目
  14. 机房收费系统——可行性研究报告
  15. Linux下使用dos2unix修改目录中文件格式
  16. 照片的尺寸和内存大小调整
  17. 用分支限界法解决人员安排问题(Personnel assignment problem)
  18. ireport分页后最后多一页空白页
  19. 元宇宙持续火爆,各地纷纷布局元宇宙
  20. 一度智信|拼多多客服售后须知

热门文章

  1. layui表格更改一列数据_layui数据表格隐藏列的方法介绍
  2. wordpress php7 mysql_WordPress可以使用PHP7的MySQLi扩展
  3. Java黑皮书课后题第2章:*2.17(科学:风寒温度)外面有多冷?...twc=35.74+0.6215ta-35.75v0.16+0.4275tav0.16,输入度数、风速显示风寒温度
  4. mac版smali2java_Android反编译apk并重新打包签名(Mac环境)
  5. Perfect World
  6. 用指向指针方法对N个字符串进行排序并输出
  7. linkedHashMap源码解析(JDK1.8)
  8. 板邓:【WordPress文件解读】wp-config.php
  9. 【工具】克隆题库(适用于所有以POJ2005-2017为模板的OJ平台)
  10. 【ubuntu】中文输入法安装二三事