参考了这篇文章http://bbs.chinaunix.net/thread-4244844-1-1.html ,不过这篇文章只支持linux,windows下并不支持,特做补充。
创建临时数据表tmp_series
create table tmp_series(id int,primary key(id));
用python生成100w记录的数据文件
python -c "for i in range(1,1+1000000): print(i)">100w.txt
也可以直接用bash做,但bash的方式要比python慢得多
[chenhj@localhost ~]$ i=1;while [ $i -le 1000000 ];do echo $i ;let i+=1; done >100w.txt
【补充】个人认为应该是bash是每循环一次写一次,python是生成的结果在内存中,一次写入,极大地提高了速度。
导入数据到tmp_series表
mysql> load data infile '/home/chenhj/100w.txt' replace into table tmp_series;
Query OK, 1000000 rows affected (9.66 sec)
Records: 1000000 Deleted: 0 Skipped: 0 Warnings: 0
【补充】
1.win下面路径是类似“F:/datax/datax/100w.txt”
2.由于操作系统的差异,win下python直接生成的文件是UCS-2 LE BOM格式的,mysql居然不认。100w条数据可以直接用noteoad++改成utf-8的。如果数据量更大notepad++打不开,那只能通过脚本实现了。
创建测试数据表
create table tb1(id int,c1 int,c2 varchar(100),primary key(id))
通过tmp_series表生成并插入测试数据,测试数据的计算方法可以自由发挥。
创建临时数据表tmp_series
create table tmp_series(id int,primary key(id));
用python生成100w记录的数据文件
python -c "for i in range(1,1+1000000): print(i)">100w.txt
也可以直接用bash做,但bash的方式要比python慢得多
[chenhj@localhost ~]$ i=1;while [ $i -le 1000000 ];do echo $i ;let i+=1; done >100w.txt
【补充】个人认为应该是bash是每循环一次写一次,python是生成的结果在内存中,一次写入,极大地提高了速度。
导入数据到tmp_series表
mysql> load data infile '/home/chenhj/100w.txt' replace into table tmp_series;
Query OK, 1000000 rows affected (9.66 sec)
Records: 1000000 Deleted: 0 Skipped: 0 Warnings: 0
【补充】
1.win下面路径是类似“F:/datax/datax/100w.txt”
2.由于操作系统的差异,win下python直接生成的文件是UCS-2 LE BOM格式的,mysql居然不认。100w条数据可以直接用noteoad++改成utf-8的。如果数据量更大notepad++打不开,那只能通过脚本实现了。
创建测试数据表
create table tb1(id int,c1 int,c2 varchar(100),primary key(id))
通过tmp_series表生成并插入测试数据,测试数据的计算方法可以自由发挥。
mysql> insert into tb1 select id,round(rand()*100000),concat('testdatatestdatatestdata',id) from tmp_series;