boss需要1500万个手机号码,导出为excel文件
由于数量太大,直接存一个文件,打开电脑会直接卡死。
需要分为15批,每批100万。
可以手工在navicat软件上面运行,根据MySQL分页公式
(page-1)*page_size,page_size
也即是(当前分页-1)*每页数量,每页数量
示例sql:
select mobile from tbl_sms
LIMIT 0,1000000
第二页
select mobile from tbl_sms
LIMIT 1000000,1000000
.......
后面的依次类推
所以写了一个完整的php文件,部分引用数据库连接的地方,请自行修改
<?php
/**
* Created by PhpStorm.
* User: xx
* Date: 2017/12/11
* Time: 13:29
*/
set_time_limit(0);
//引入框架
include(dirname(__FILE__) .'/../header.php');
ini_set('memory_limit','1200M');
//导出为csv文件
function import_csv($i){
//csv文件位置
$filePath="/upload/tmp/sms/".$i. '.csv';
//PHP文件处理类 SplFileObject,5.12版本以上都有
$fileObj = new SplFileObject($filePath, 'ab');
//分页公式 (page-1)*page_size,也即是(当前分页-1)*每页数量
$start=($i-1)*1000000;
//sql语句
$sql="select mobile from tbl_sms_201711
LIMIT $start,1000000";
echo $sql."\n";
//exit;
//框架连接数据库,这里指定的是sms,执行sql语句
//注意:这里我自己用的框架,请自行修改
$res=db::connect('sms')->query($sql);
//print_r($res);
//遍历数组,写入文件
foreach ($res as $values) {
$fileObj->fputcsv(array_map(function ($item){
return iconv('UTF-8', 'GBK', $item);
}, $values));
}
}
//执行15次
for ($i=1;$i<=15;$i++){
import_csv($i);
}
执行效果如下:
select mobile from tbl_sms_201711
LIMIT 0,1000000
select mobile from tbl_sms_201711
LIMIT 1000000,1000000
select mobile from tbl_sms_201711
LIMIT 2000000,1000000
select mobile from tbl_sms_201711
LIMIT 3000000,1000000
select mobile from tbl_sms_201711
LIMIT 4000000,1000000
select mobile from tbl_sms_201711
LIMIT 5000000,1000000
select mobile from tbl_sms_201711
LIMIT 6000000,1000000
select mobile from tbl_sms_201711
LIMIT 7000000,1000000
select mobile from tbl_sms_201711
LIMIT 8000000,1000000
select mobile from tbl_sms_201711
LIMIT 9000000,1000000
select mobile from tbl_sms_201711
LIMIT 10000000,1000000
select mobile from tbl_sms_201711
LIMIT 11000000,1000000
select mobile from tbl_sms_201711
LIMIT 12000000,1000000
select mobile from tbl_sms_201711
LIMIT 13000000,1000000
select mobile from tbl_sms_201711
LIMIT 14000000,1000000
查看/upload/tmp/sms目录
total 175800
-rw-r--r-- 1 root root 12000000 Dec 12 15:36 10.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:36 11.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:36 12.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:36 13.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:36 14.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:37 15.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:35 1.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:35 2.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:35 3.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:35 4.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:35 5.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:35 6.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:36 7.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:36 8.csv
-rw-r--r-- 1 root root 12000000 Dec 12 15:36 9.csv