mysql 开发进阶篇系列 50 表的数据导入(load data infile,mysqlimport )
一.概述
上篇讲到的表的数据导出(select .. into outfile 或者mysqldump),这篇继续讲表的数据导入,导入也同样有二个方法,分别是load data infile... 和mysqlimport。本质是一样的,区别在于前者是mysql内部执行, 后者是mysql 外部执行。
1. load data infile 方法1
-- 格式语法如下:
load data [local] infile 'filename' info table tablename[option]
Option选项 |
说明 |
Fields terminated by 'string' |
字段分隔符, 默认为制表符 ' \t' |
Fields [optionally] enclosed by 'char' |
字段引用符, 如果加了optionally,则只用在char, varcahr, text 等字符型字段上。 |
Fields escaped by 'char' |
转义字符, 默认为 '\n' |
Lines starting by 'string' |
每行前都加此字符串, 默认'' |
Lines terminated by 'string' |
行结束符,默认为'\n' |
Ignore number lines |
忽略输入文件中的前n 行数据 |
(col_name_or_user_var, ..) |
按照列出的字段顺序和字段数量加载数据 |
Set col_name=expr, ... |
将列做一定的数值转换后再加载 |
下面将/tmp/ testbackup1.txt 中的数据加载到表testbackup中,案例如下:
-- 先备份
CREATE TABLE testbackup2 SELECT * FROM testbackup;
-- 删除
DELETE FROM testbackup
-- 全部导入(12行受影响)
LOAD DATA INFILE '/tmp/testbackup1.txt' INTO TABLE testbackup FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-- 导入过滤前二行(10行受影响)
DELETE FROM testbackup
LOAD DATA INFILE '/tmp/testbackup1.txt' INTO TABLE testbackup FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 2 LINES
-- 在上面的基本上,指定加载部分列和列顺序
DELETE FROM testbackup
LOAD DATA INFILE '/tmp/testbackup1.txt' INTO TABLE testbackup FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 2 LINES(id,`name`)
-- 将id列的内容+10后再加载到表中(此时id从11开始)
DELETE FROM testbackup
LOAD DATA INFILE '/tmp/testbackup1.txt' INTO TABLE testbackup FIELDS TERMINATED BY ',' ENCLOSED BY '"' SET id=id+10
2. mysqlimport 方法2
--格式语法如下:
mysqlimport -uroot -p [-- local] dbname order_tab.txt [option]
Option选项 |
说明 |
--fields-terminated-by =name |
字段分隔符 |
--fields-enclosed-by=name |
字段引用符 |
--fields-optionally-enclosed-by=name |
字段引用符, 加了optionally,则只用在char, varcahr, text 等字符型字段上。 |
--fields-escaped-by=name |
转义字符 |
--lines-terminated-by =name |
记录结束符 |
--Ignore-lines=number |
忽略输入文件中的前n 行数据 |
-- 注意文件名(testbackup.txt)要与test库中的testbackup表名一致,导入脚本如下:
[root@hsr ~]# mysqlimport -uroot -p test /tmp/testbackup.txt --fields-terminated-by=',' --fields-enclosed-by='"'
Enter password:
test.testbackup: Records: 12 Deleted: 0 Skipped: 0 Warnings: 0
注意: 如果导入导出是跨平台操作的(windows和linux),那么参数--lines-terminated-by的值在windows上为--lines-terminated-by='\r\n' 。在linux上为--lines-terminated-by='\n'。 上面的案例中--lines-terminated-by的值默认是'\n' 。 对于load data infile是导入数据最快的方法,在管理维护中使用很也频繁,应此要重点掌握。
最新文章
- 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith
- Spot光照资料
- Perl中的正则表达式
- BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元
- HBase shell 常用指令
- linux中find批量删除空文件及空文件夹
- 使用IDEA部署Myeclipse项目
- 一个想法照进现实-《IT连》创业项目:聊聊最近两三事
- python中os.path.isdir()等函数的作用和用法
- TIPS FOR IMPROVING PERFORMANCE OF KAFKA PRODUCER
- 安装snap及snap常安装软件
- linux shell的here document用法(cat <;<; EOF)
- ScrollView与ListView的事件冲突
- C# JToken类的使用,实现解析动态json数据、遍历、查找
- 漫画 | Redis常见面试问题(二)
- java collection和Iterator
- CCF CSP 201503-2 数字排序
- Red Hat Enterprise Linux 7.4配置VSFTP服务器
- 将Excel中读取的科学计数法表示的Double数据转换为对应的字符串
- 一图看懂Kafka On Zookeeper