明凯博客

关注网站技术,一个特立独行的程序员

【python案例】将mysql数据库内容分割为小CSV文件

上次写了将csv文件分割成小文件,但是csv中对源文件不好操作,所以我将源文件csv导入到mysql中,然后将mysql中的数据分割成小文件。

【python案例】将大CSV文件分割为小CSV文件

分割的处理逻辑是一样的,不一样的是循环读取出excel文件。

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
43
44
45
46
47
48
49
# -*- coding: utf-8 -*-
# 
import os
import sys
import MySQLdb
import MySQLdb.cursors
import csv
import random
 
# 初始化编码
reload(sys)
sys.setdefaultencoding('utf-8')
 
# 和本地的数据库建立连接
host = '127.0.0.1'
user = 'root'
psd  = ''
db   = 'spider'
cha  = 'utf8'
db   = MySQLdb.connect(host=host,user=user,passwd=psd,db=db,charset=cha)
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 查询语句
sql = "SELECT * FROM boohoo"
cursor.execute(sql)
results= cursor.fetchall()
#mysql返回的是元祖,需要转换成数组
results=list(results)
random.shuffle(results)
# results=cursor.fetchone()
 
i=j=1
for row in results:
	if i%102==0:
		print u"CSV文件source%s已生成成功" % j
		j+=1
	# 写入csv
	csv_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),'csv','source'+str(j)+'.csv')
	csv_file = file(csv_path, 'ab+')
	csv_write = csv.writer(csv_file)
	# 文件不存在则写入头部	
	if os.path.getsize(csv_path)==0:
		csv_write.writerow(['v_products_image','v_products_name_1','v_products_description_1','v_products_price','v_categories_name_1','v_categories_name_2'])
	# 写入数据
	csv_write.writerow([row[1],row[2],row[3],row[4],row[5],row[6]])
	csv_file.close()
	i+=1
# 关闭连接
db.close()

这里用random.shuffle(results)结果进行了随机,注意mysql返回的是元祖,需要转换成数组,这样子才能修改数据。

看看我们运行的结果。
3

, , , , ,

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注