Mysql中的导数据脚本
这两天在对线上库进行初始化,需要导大量的数据到线上,使用Mysql的load data很容易实现。
1.原始数据
[mysql@DEV_SNS1 mysql]$ more 111.txt
2263,65025185,1
2263,61833350,2
2263,63713789,3
2263,28344254,4
2263,13134504,5
2580,59707749,1
2580,43,2
....
2.表结构如下
root@test 10:53:27>desc tmp_dy;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id1 | int(11) | YES | | NULL | |
| id2 | int(11) | YES | | NULL | |
| id3 | int(11) | YES | | NULL | |
| id4 | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
3.现在需要将数据导到tmp_dy的表中,同时把id4置为id3+100
root@test 10:57:37>LOAD DATA INFILE \'/home/mysql/111.txt\'
-> REPLACE
-> INTO TABLE test.tmp_dy
-> FIELDS TERMINATED BY \',\' ENCLOSED BY \'"\' LINES TERMINATED BY \'\\n\'
-> (id1, id2, id3)
-> SET id4=id3+100;
Query OK, 547386 rows affected (7.59 sec)
Records: 547386 Deleted: 0 Skipped: 0 Warnings: 0
--语法
LOAD DATA INFILE \'/home/mysql/111.txt\'
REPLACE(IGNORE)
--指定了REPLACE,则输入行会替换原有行(换句话说,与原有行一样,对一个主索引或唯一索引具有相同值的行)
--指定IGNORE,则把原有行复制到唯一关键字值的输入行被跳过
INTO TABLE test.tmp_dy
FIELDS TERMINATED BY \',\' --分隔符
ENCLOSED BY \'"\'
LINES TERMINATED BY \'\\n\' --换行符
(id1, id2, id3) --指定字段
SET id4=id3; --可以做一些运算,字段初始化的的时候还是不错的。
其他的语法:
mysql> LOAD DATA INFILE \'/tmp/test.txt\' INTO TABLE test LINES STARTING BY "xxx";
使用此语句,您可以读入包含有如下内容的文件:
xxx"row",1
something xxx"row",2
并只得到数据("row",1)和("row",2)。
IGNORE number LINES选项可以被用于在文件的开始处忽略行。例如,您可以使用IGNORE 1 LINES来跳过一个包含列名称的起始标题行:
mysql> LOAD DATA INFILE \'/tmp/test.txt\'INTO TABLE test IGNORE 1 LINES;
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Incessant 来源: Incessant
- 标签: 导数据
- 发布时间:2009-10-11 22:38:32
- [56] Oracle MTS模式下 进程地址与会话信
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [55] 如何拿下简短的域名
- [54] 图书馆的世界纪录
- [53] android 开发入门
- [53] Go Reflect 性能
- [50] 读书笔记-壹百度:百度十年千倍的29条法则
- [49] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑