最近了解了Mysql 的 load data local infile命令
下面写一下它的基本用途,
和insert into 用途类似,LOAD DATA INFILE也是将数据插入表中,不过它的插入速度要快很多,适合于大数据插入。
基本语法组成
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS[TERMINATED BY '\t'][OPTIONALLY] ENCLOSED BY][ESCAPED BY ]]
[LINES TERMINATED BY '\n']
[IGNORE number LINES]
[(col_name,...)]
1.0
LOW_PRIORITY:设置最低优先级,LOAD DATA语句的执行被推迟到没有其他用户读取表后
1.1
LOCAL:用LOCAL关键字,则用客户端的文件中执行读取插入,如果没有指定,则文件必须位于服务器上,若在服务器上操作LOAD DATA INFILE,则需要有该文件的操作权限
LOAD DATA INFILE “./data.txt” INTO TABLE db2.my_table;从服务器目录下读取文件 `data.txt”
LOAD DATA LOCAL INFILE “user/data.txt” INTO TABLE db2.my_table;从本地的User目录下读取文件 `data.txt”
1.2 'file_name.txt'
需要写入数据库表的文件
1.3 [REPLACE | IGNORE]
若写入表中的数据包含原表中已存在的唯一标示或ID的记录,用
REPLACE或IGNORE来控制操作,REPLACE使用文件中的新记录来代替原表中唯一键值的旧记录,而IGNORE则忽略新的记录任然保留旧的唯一键值
记录
若表my_tale中已有记录
id name
111 aaa
id为唯一标示
若要插入文件中包含
id name
111 bbb
的记录
则用 REPLACE关键字的话,数据库中会插入
111 bbb来代替111 aaa
若用IGNORTE关键字的话,数据库中
任然会保留111 aaa而 111 bbb不会被插入
1.4 INTO TABLE tbl_name
需要写入数据库的表名
1.5 FIELDS
指定字段之间TERMINATED BY, [OPTIONALLY] ENCLOSED BY和ESCAPED BY 字段分隔,特殊字符转义等等
的相关操作
1.51
TERMINATED BY
指定字段之间的分隔符,默认为\t,
1.52 [OPTIONALLY] [ENCLOSED BY ''][ESCAPED BY ]
OPTIONALLY
ENCLOSED BY:指定每个记录中需要特殊处理写入的字符,比如引号,
若要读入
name
"aaa"
需要对ENCLOSED BY 做指定
FIELDS ENCLOSED BY ”"” ESCAPED BY ”\\”
而ESCAPED BY则用来转义ENCLOSED BY中指定的特殊字符
如果省略OPTIONALLY,所有的字段都将被ENCLOSED BY影响
比如
“1”,a string”,”100.20“
如果指定OPTIONALLY,则只有字符型字段会被影响
1.6 [IGNORE number LINES]
设置每行记录之间的区隔,默认以\n作为换行符
1.7 [IGNORE number LINES]
IGNORE number LINES选项可被用来忽略在文件开始的一个列名字的头
1.8 [(col_name,...)]
可选择需要的列来插入