python提取百万数据到csv文件

转自:http://www.2cto.com/kf/201311/258112.html

今天有需求,需要把系统所有用户注册的id和邮箱等信息导出来提供给他们,在mysql里面count了下,大概有350万左右

就尝试了下用python实现,顺带练习下python写csv的功能,本来想用工具的,但想了下速度会很慢,

整个导出过程大概就3分钟左右,还是蛮快的,毕竟有三百多万,导完后有150M左右

下面是我的脚本deal_csv.py,由于需要连接mysql数据库,脚本依赖MySQLdb模块

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

__author__ = ‘chunyang.wu‘

# -*- coding: utf-8 -*- 

#!/usr/bin/env python 

import MySQLdb 

import os 

os.environ[‘NLS_LANG‘] = ‘SIMPLIFIED CHINESE_CHINA.UTF8‘

import sys 

reload(sys) 

sys.setdefaultencoding(‘utf-8‘

import csv 

  

class Handle: 

    def __init_db(self): 

        self._mysql_db = MySQLdb.connect(host="172.16.1.55",user="test",passwd="123456",port=3306,db="test",unix_socket="/tmp/mysql5.sock"

        self.mysql_cur=self._mysql_db.cursor() 

        self.seq = 0

  

    def __init__(self): 

        self.__init_db() 

  

    def _release_db(self): 

        self.mysql_cur.close() 

        self._mysql_db.close() 

  

    def _do(self): 

        self.mysql_cur.arraysize = 50

        select_sql = "SELECT id,email,FROM_UNIXTIME(create_time) AS create_time FROM test.tbl_member "

        print select_sql 

        self.mysql_cur.execute(select_sql) 

        count = 0

        csvfile = file(‘all_user.csv‘, ‘wb‘

        print dir(csv) 

        writers = csv.writer(csvfile) 

        writers.writerow([‘uid‘, ‘email‘, ‘createtime‘]) 

        while 1

            lines = self.mysql_cur.fetchmany(50

            if len(lines)==0

                break

            for i in lines: 

                print

                writers.writerows([i]) 

        csvfile.close() 

def main():

p = Handle()

p._do()

p._release_db()

if __name__=="__main__":

main()

csv文件结构如下图

时间: 2024-10-08 23:07:11

python提取百万数据到csv文件的相关文章

Python中把数据存入csv文件

with open("可乐数据.csv","a",encoding="gbk") as fp: fp.write("%s,%s,%s,%s"%(result[0],result[1],name.split("%")[1],result[2])+"\n") 这里的csv文件如果在Python解释器中打开的话是乱码的,把文件复制出来用excel打开就正常了. 原文地址:https://www

Jsoup学习笔记9:Jsoup 解析saz文件,读取其中的htm文件到字符串,提取字符串中的数据写入csv文件中

本篇笔记将上篇笔记的操作做些改进,不再把saz文件中的htm文件解析出来,而是不解压直接读取其中的数据成字符串,基本思路如下: 1.自定义一个从文本文件读取内容到字符串的类:解析saz文件中的htm文档,将文件的内容读取到字符串中 2.自定义利用Jsoup解析htm字符串的类:利用Jsoup解析传入的htm字符串,将解析结果写入csv文件中 3.解析时,指定好文件路径,直接调用上面的两个工具类即可 示例代码如下: package com.daxiang.saztest; /** * 自定义一个从

python之读取和写入csv文件

写入csv文件源码: 1 #输出数据写入CSV文件 2 import csv 3 data = [ 4 ("Mike", "male", 24), 5 ("Lee", "male", 26), 6 ("Joy", "female", 22) 7 ] 8 9 #Python3.4以后的新方式,解决空行问题 10 with open('d://write.csv', 'w', newline

PHP导出数据到CSV文件函数/方法

如果不清楚什么是CSV文件,可看如下文章介绍  CSV格式的是什么文件?CSV是什么的缩写? /** * 导出数据到CSV文件 * @param array $data 数据 * @param array $title_arr 标题 * @param string $file_name CSV文件名 */ function export_csv(&$data, $title_arr, $file_name = '') { ini_set("max_execution_time"

Python提取netCDF数据并转换为csv文件

netCDF全称是network Common Data Format(网络通用数据格式),是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准.目前,NetCDF广泛应用于大气科学.水文.海洋学.环境模拟.地球物理等诸多领域. 我们使用python对数据进行分析处理,首先我们需要下载安装netCDF4包,可使用p

PYTHON将列表存储为csv文件以及从csv中提取数据2

这回咱们用个pandas库 1.首先先看将列表存储到csv: 代码来自于:https://blog.csdn.net/weixin_43245453/article/details/90054820 import pandas as pd #a和b的长度必须保持一致,否则报错 a = [x for x in range(5)] print(a) b = [x for x in range(5,10)] #字典中的key值即为csv中列名 dataframe = pd.DataFrame({'a_

批量导出表数据到CSV文件

需求:把oracle数据库中符合条件的N多表.导出成csv文本文件.并以表名.csv为文件名称存放. 实现:通过存储过程中UTL_FILE函数来实现.导出的csv文件放入提前创建好的directory中. 用法:使用下面命令数据预运行的SQL脚本 SELECT 'EXEC sql_to_csv(''select * from ' ||T.TABLE_NAME || ''',''OUT_PUT_CSV''' || ',''ODS_MDS.' || T.TABLE_NAME || '.csv'');

用php导入10W条+ 级别的csv大文件数据到mysql。导出10W+级别数据到csv文件

转自:http://blog.csdn.net/think2me/article/details/12999907 1. 说说csv 和 Excel 这两者都是我们平时导出或者导入数据一般用到的载体.两者有什么区别呢?csv 格式更兼容一点.那么共同点都是GBK格式的,非UTF8.所以我们上传文件的时候,老是出现乱码,就是编码问题没有转好导致. 2. 推荐的几种方法 1. 函数 fgetss($handel);  返回字符串.它就是strip_tags(fget($handel))的组合读取cs

大数据量.csv文件导入SQLServer数据库

前几天拿到了一个400多M的.csv文件,在电脑上打开要好长时间,打开后里面的数据都是乱码.因此,做了一个先转码再导入数据库的程序.100多万条的数据转码+导入花了4分钟,感觉效率还可以.各位网友有更好的方法,请在留言中指点下,一起学习学习,多谢了. static void Main(string[] args) { int count = 0; string readerPath=@"C:\Users\Administrator\Desktop\readerDemo.csv"; st