文档章节

mysql load

Tosmiling
 Tosmiling
发布于 2015/05/20 09:20
字数 1873
阅读 2
收藏 0
点赞 0
评论 0

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 NAMEScharacter_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,则被认为与连接的客户端有关:

  •  如果指定了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目录中读取。

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

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

如果您指定了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, TEXTENUM)的列中的值.

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字符进行转义。


本文转载自:

共有 人打赏支持
Tosmiling
粉丝 3
博文 3
码字总数 0
作品 0
杭州
Tpcc安装

wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm rpm -ivh epel-release-5-4.noarch.rpm 安装bzr客户端 # yum clean all # yum install bzr Dependencies R......

梧桐0928
2014/07/28
0
0
mysql load 主键验证

load data LOCAL infile '~/Documents/loadtest.txt' INTO TABLE test FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'n'; 1.如果id不是主键,会不停增加。 mysql> load da......

王二铁
2014/05/14
0
0
MySql批量数据导入Load data infile解决方案

有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间。 ...

小小人故事
2015/11/25
130
0
如何用tpcc-mysql工具进行oltp压力测试

如何用tpcc-mysql工具进行oltp压力测试 http://imysql.com/2014/10/10/tpcc-mysql-full-user-manual.shtml 借鉴:http://blog.csdn.net/zengxuewen2045/article/details/51335686 一.下载源码......

lxm111111
2017/01/21
0
0
对MySQL load data infile的一点想法

今天无意和同事讨论MySQL load data infile的问题,这个问题是由开发那边引起的:他们竟然对一个4千万行的数据直接load data infile插入测试库,结果可想而知,出问题了。跑了一整晚都没跑完...

长平狐
2012/11/01
539
0
mysqldump 数据库备份

mysqldump:数据库备份程序 有3种方式来调用mysqldump: mysqldump [options] db_name [tables]mysqldump [options] ---database DB1 [DB2 DB3...]mysqldump [options] --all--database 如果......

北海vs
2016/06/08
20
0
MySQL LOAD DATA 多文件入库

基本信息 目标表名: t_test(username,password) 目标数据库: test 数据库用户名: yourdbname 数据库密码: yourdbpassword LOAD DATA语法参考 Linux Windows...

CasparLi
2016/07/25
19
0
CentOS 7.3安装Zabbix 3.2.6记录

1. 安装zabbix准备 本文采用操作系统:CentOS7.3 x64 需要epel源 wget https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm rpm -ivh epel-release-latest-7.noarc......

koumm
2017/06/15
0
0
mac msql config

To have launchd start mysql at login: ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents Then to load mysql now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mys......

mingle
2016/02/04
25
0
MySQL数据导入导出方法与工具(2)

批处理导入文件,从sql文件导入数据到数据库中 ,批处理是一种非交互式运行mysql程序的方法,如同您在mysql中使用的命令一样,你仍然将使用这些命令。 为了实现批处理,您重定向一个文件到m...

iTeacher
2011/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Iterm2安装Zsh + Oh My Zsh+Solarized

安装Oh My Zsh curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh 安装Zsh: 1.安装zsh brew install zsh 2.配置iterm2 sudo vim /etc/shells输入:......

孟飞阳
4分钟前
0
0
缓解ddos攻击的有效解决办法

因为防火墙无法处理所有类型的ddos攻击,下一代防火墙生成内置的DDoS防御,但是无法处理所有类型的攻击。对抗DDoS攻击的最佳做法是有专属的设备或者服务在攻击透过防火墙或者其他的IT基础设施...

上树的熊
5分钟前
0
0
Spark Streaming如何使用checkpoint容错

在互联网场景下,经常会有各种实时的数据处理,这种处理方式也就是流式计算,延迟通常也在毫秒级或者秒级,比较有代表性的几个开源框架,分别是Storm,Spark Streaming和Filnk。 伦理片 http...

刺猬一号
6分钟前
1
0
Xamarin Essentials教程地理定位Geolocation

Xamarin Essentials教程地理定位Geolocation 通过地理定位功能,应用程序可以获取用户的当前地理位置,如经纬度值。利用地理位置,可以在地图上定位,也可以转化物理位置,划分用户的归属地。...

大学霸
19分钟前
0
0
vue 编译警告 Compiled with 4 warnings

There are multiple modules with names that only differ in casing. This can lead to unexpected behavior when compiling on a filesystem with other case-semantic. Use equal casing.......

落雪飞声
23分钟前
0
0
开篇文章,长期记录安全情形

密码位置 密码位于注释中 密码位于服务器端文件中 通过访问根目录下.htaccess、robots.txt查看禁查路径 密码文件可能存在的路径:/、/extra/、/extras/ 密码加密 binary to base16 sha256 彩虹...

hirainn
36分钟前
0
0
mysql数据库设置root可以远程登录的方法

mysql数据库设置root可以远程登录的方法 Posted on 2018-02-21 21:08 sishuisufeng 阅读(161) 评论(0) 编辑 收藏 允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如...

rootliu
41分钟前
1
0
TensorFlow 图的基本操作

图的创建,一般只需要使用默认图就能满足大部分的需求了 # 1 创建图的方法# 在默认图中创建常量c = tf.constant(0.0)# 新建一个图g = tf.Graph()# 设置上下文管理器,标明操作...

阿豪boy
今天
0
0
git 忽略文件失效

git update-index --assume-unchanged */.project

林子大鸟
今天
1
0
实现验证码功能

1、实现验证码,并存储 import com.dtb.pc_enterprise.entity.EnterUserEntity;import com.dtb.pc_enterprise.service.AdminService;import com.dtb.pc_enterprise.util.RedisService;......

木九天
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部