excel格式海量数据导入到mysql
/ / 点击 /(2007-10-17日更新)
使用load data infile
要mysql支持 “load data infile
” ,编译的时候需要带 --enable-local-infile
选项才行!
有这样一个表:1
2
3
4
5
6Create Table: CREATE TABLE `ttt` (
`c1` bigint(20) DEFAULT NULL,
`c2` bigint(20) DEFAULT NULL,
`c3` bigint(20) DEFAULT NULL,
`c4` bigint(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk
一个文本文件 a.txt 内容:(间隔符号t)1
2
3
4
5
6
7111111 22222222 3333333 111111
111111 22222222 3333333 111111
111111 22222222 3333333 111111
111111 22222222 3333333 111111
111111 22222222 3333333 111111
111111 22222222 3333333 111111
...
导入数据库:
1 | load data local infile 'a.txt' into table ttt fields terminated by 't' |
指定字段
1 | load data local infile 'a.txt' into table ttt fields terminated by 't' (c1,c2,c4) |
( 过去的纪录 )
这样一个excel文档:
1 | .... |
这样的文件有n个。
要将这个excel文件的数据导入数据库表(tbl_test)中的一个字段(field_num)中:
即要得到这样的结果:
1 | ... |
怎么将数据导入数据库呢?
方法有这样几种:
1.将excel文档转换成cvs格式的文档,然后用程序将cvs导入数据库(数据量太大,速度很慢)。
可以用php自己写程序,也可以用现成的工具,例如:Excel Parser Pro
2.将excel文档直接导入数据库,用工具:Excel to Mysql demo
3.直接用mysql从文本中导入数据,这个方法是比较快,比较可行的方法:
首先需要,将数据整理成一列存到txt文本中(test.txt),excel有行数限制。
1 | create table tbl_test ( field_num bigint(20) not null, primary key (field_num) ); |
然后再将这个数据转移到你所用的表的某一列:
1 | insert into tbl_freshman_card (fresh_serial) select field_num from tbl_test; |
就搞定了。