使用python将mysql数据导入excel-select into outfile

-- 本地路径一定要加引号 'D:\\luoluowork\\baidu20160901.csv'

-- mysql一般都是utf8编码,而excel都是gb2312编码,所以要转换

-- 我试了.xls和.xlsx都失败了,只有csv可以

select CONVERT(`年份` using gb2312)
from `汇总`
where `年份`=2016 and `月份`=9
into OUTFILE 'D:\\luoluowork\\baidu20160901.csv'

FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'

 

下面粘贴一个python使用select into outfile的代码

需要注意的几个地方

1.csv使用gbk方式,mysql一般使用utf8,所以一定要转换编码

2.字段名,表明要有反引号

3.拼接sql1的过程中使用一个引号报错,所以使用引号的地方全部用了三个引号

4.FIELDS TERMINATED BY ','

5.sys.setdefaultencoding('utf-8')

6.我试了.xls和.xlsx都失败了,只有csv可以

# coding=utf-8
import sys
import os
import MySQLdb
import csv
reload(sys)
sys.setdefaultencoding('utf-8')

list1 = ['2014']
#list2 = ['3']
list2 = ['1','2','3','4','5','6','7','8','9','10','11','12']
# list2=['01','02','03','04','05','06','07','08','09','10','11','12']
exception=[]

conn=MySQLdb.connect(host='localhost',user='root',passwd='123456')
conn.select_db('ctr')
conn.set_character_set('utf8')
cur = conn.cursor()
for nian in list1:
    for yue in list2:
        if int(yue) < 10:
            excel_file = "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/baidu_CRT/baidu"+nian+"0"+yue+".csv"
        else:
            excel_file = "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/baidu_CRT/baidu"+nian+yue+".csv"

        sql1 = """select CONVERT(`年份` using  gb2312) ,CONVERT(`月份` using  gb2312),CONVERT(`媒介类型` using  gb2312),CONVERT(`区域` using  gb2312),CONVERT(`省份` using  gb2312),CONVERT(`产品大类` using  gb2312),
					CONVERT(`产品中类` using  gb2312),CONVERT(`产品小类` using  gb2312),CONVERT(`品牌` using  gb2312),CONVERT(`产品` using  gb2312),CONVERT(`总次数` using  gb2312),CONVERT(`总费用` using  gb2312),CONVERT(`总长度面积` using  gb2312)
					from `汇总` where `年份` = """+ nian + """ and `月份` =""" + yue +""" INTO OUTFILE '"""+ excel_file +"'" + """ FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'"""
        print sql1
        cur.execute(sql1)
cur.close()
conn.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值