(2007-10-17日更新)

使用load data infile
要mysql支持 “load data infile” ,编译的时候需要带 --enable-local-infile 选项才行!

有这样一个表:

1
2
3
4
5
6
Create 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
7
111111    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
2
3
4
5
6
7
8
9
....
0462311 25342 20034 345 200209 20258 234....(20列)
3457657 80342 23456 457 345877 34546 205 ....
3462311 20302 78900 456 214568 20258 345....
6793454 20344 12367 678 789003 68794 890....
8900345 20123 34578 672 123677 78090 124....
4569001 23442 12379 120 567834 12314 789....
...
(60,000行)

这样的文件有n个。
要将这个excel文件的数据导入数据库表(tbl_test)中的一个字段(field_num)中:
即要得到这样的结果:

1
2
3
4
5
6
7
8
9
...
0462311
3457657
3462311
6793454
8900345
4569001
...
(1,200,000行)

怎么将数据导入数据库呢?

方法有这样几种:
1.将excel文档转换成cvs格式的文档,然后用程序将cvs导入数据库(数据量太大,速度很慢)。
可以用php自己写程序,也可以用现成的工具,例如:Excel Parser Pro
2.将excel文档直接导入数据库,用工具:Excel to Mysql demo
3.直接用mysql从文本中导入数据,这个方法是比较快,比较可行的方法:
首先需要,将数据整理成一列存到txt文本中(test.txt),excel有行数限制。

1
2
create table tbl_test ( field_num bigint(20) not null, primary key (field_num) );  
load data local infile 'FilePath/test.txt' into table tbl_test lines terminated by 'n';

然后再将这个数据转移到你所用的表的某一列:

1
insert into tbl_freshman_card (fresh_serial) select field_num from tbl_test;

就搞定了。