码迷,mamicode.com
首页 > 数据库 > 详细

mysql 大表拆分成csv导出

时间:2016-12-28 09:42:14      阅读:479      评论:0      收藏:0      [点我收藏+]

标签:自动化   mod   line   生成   csv文件   执行   log   root   read   

最近公司有一个几千万行的大表需要按照城市的id字段拆分成不同的csv文件。

写了一个自动化的shell脚本

在/home/hdh 下面

linux-xud0:/home/hdh # ll
total 16
-rwxrwxrwx 1 root root 902 Dec 28 07:47 cf.sh
-rwxrwxrwx 1 root root 6 Dec 28 07:47 id_1.txt
-rwxrwxrwx 1 root root 6 Dec 27 20:00 log

vim  cf.sh

#!/bin/bash
DATE=$(date +‘%Y%m%d‘)
cd /home/hdh

rm -r /home/hdh/file      #删除上次执行shell 生成的file 文件夹
mkdir /home/hdh/file     #创建一个file文件夹用于存放生成的csv 文件
chmod 777 /home/hdh/file -R

echo `mysql -uroot -proot -e "SELECT DISTINCT id FROM xizang.test;" |grep -Evi "id"` > /home/hdh/id_1.txt   #把该表的id 字段的值拿到存到  /home/hdh/id_1.txt
#cat id_1.txt |while read line
for line in $(<id_1.txt);
do
# echo ${line} >> id_2.txt
# echo `mysql -uroot -proot -e "SELECT DISTINCT id FROM xizang.test where id=‘${line}‘;"` >>id_2.txt
# mysql -uroot -proot -e "SELECT DISTINCT id FROM xizang.test where id=‘${line}‘ into outfile ‘/home/hdh/c.csv‘ FIELDS TERMINATED BY ‘,‘ ENCLOSED BY ‘"‘ LINES TERMINATED BY ‘\r\n‘ ;"
mysql -uroot -proot <<EOF
SELECT * FROM xizang.test where id=‘${line}‘ into outfile ‘/home/hdh/file/${line}_c.csv‘ FIELDS TERMINATED BY ‘,‘ ENCLOSED BY ‘"‘ LINES TERMINATED BY ‘\r\n‘ ;   #以id 为where  的条件,生成到对应的csv 中。
exit
EOF
done

 

mysql 大表拆分成csv导出

标签:自动化   mod   line   生成   csv文件   执行   log   root   read   

原文地址:http://www.cnblogs.com/huodaihao/p/6228111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!