使用Python插入100万条数据到MySQL数据库并将数据逐步写出到多个Excel
Python插入100万条数据到MySQL数据库
步骤一:导入所需模块和库
首先,我们需要导入 MySQL 连接器模块和 Faker 模块。MySQL 连接器模块用于连接到 MySQL 数据库,而 Faker 模块用于生成虚假数据。
import mysql.connector # 导入 MySQL 连接器模块
from faker import Faker # 导入 Faker 模块,用于生成虚假数据
步骤二:创建 Faker 实例
然后,我们创建一个 Faker 实例,以便使用其功能生成虚假数据。
faker = Faker() # 创建 Faker 实例
步骤三:连接到 MySQL 数据库
接下来,我们使用 MySQL 连接器模块连接到 MySQL 数据库。需要提供主机地址、用户名、密码和数据库名称。
conn = mysql.connector.connect(
host='localhost', # 数据库主机地址
user='root', # 数据库用户名
password='123456', # 数据库密码
database='test2' # 数据库名称
)
步骤四:创建游标对象
然后,我们创建一个游标对象,用于执行 SQL 语句。
cursor = conn.cursor() # 创建游标对象,用于执行 SQL 语句
步骤五:插入虚假数据
现在,我们准备开始插入虚假数据到数据库中。我们使用循环生成多条数据,并将其插入到数据库表中。
for _ in range(1000000): # 循环100万次,插入100万条数据
# 使用 Faker 实例生成虚假数据
name = faker.name() # 姓名
address = faker.address() # 地址
email = faker.email() # 电子邮件
phone_number = faker.phone_number() # 电话号码
job_title = faker.job() # 职位
company = faker.company() # 公司
date_of_birth = faker.date_of_birth() # 出生日期
credit_card_number = faker.credit_card_number() # 信用卡号 # 定义 SQL 插入语句
sql = "INSERT INTO fake_data (name, address, email, phone_number, job_title, company, date_of_birth, credit_card_number) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)" # 设置参数值
val = (name, address, email, phone_number, job_title, company, date_of_birth, credit_card_number) # 执行 SQL 插入语句
cursor.execute(sql, val)
步骤六:提交事务和关闭连接
最后,我们提交事务以保存更改,并关闭游标和数据库连接。
conn.commit() # 提交事务,保存更改
cursor.close() # 关闭游标
conn.close() # 关闭数据库连接
使用 Python 将 MySQL 数据库中的数据逐步查询并写入多个 Excel 文件
步骤一:导入所需模块和库
首先,我们需要导入 os 模块用于文件和目录操作,pandas 库用于数据处理,以及 mysql.connector 模块用于连接 MySQL 数据库。
import os # 导入 os 模块,用于文件和目录操作
import pandas as pd # 导入 pandas 库并使用 pd 别名,用于数据处理
import mysql.connector # 导入 mysql.connector 模块,用于连接 MySQL 数据库
步骤二:连接到 MySQL 数据库
conn = mysql.connector.connect(
host='localhost', # 数据库主机地址
user='root', # 数据库用户名
password='123456', # 数据库密码
database='test2' # 数据库名称
)
步骤三:设置每个 Excel 文件的行数限制和输出文件夹
chunk_size = 50000 # 每个 Excel 文件的行数限制
output_folder = "output_data" # 输出文件夹名称
if not os.path.exists(output_folder): # 如果文件夹不存在,则创建
os.makedirs(output_folder)
步骤四:逐步查询数据库并写入 Excel 文件
offset = 0 # 查询偏移量初始值为0
while True: # 使用循环查询数据库,直到数据查询完毕
query = f"SELECT * FROM fake_data LIMIT {offset}, {chunk_size}" # 构造 SQL 查询语句
df = pd.read_sql(query, conn) # 使用 pandas 读取 SQL 查询结果为 DataFrame
if df.empty: # 如果查询结果为空,则退出循环
break
output_file = os.path.join(output_folder, f"output_{offset // chunk_size + 1}.xlsx") # 构造输出文件路径
df.to_excel(output_file, index=False) # 将 DataFrame 写入 Excel 文件,不写入索引列
offset += chunk_size # 更新查询偏移量,准备下一次查询
步骤五:关闭数据库连接
conn.close() # 关闭数据库连接
最后,我们关闭数据库连接,释放资源。
使用Python插入100万条数据到MySQL数据库并将数据逐步写出到多个Excel的更多相关文章
- 教你如何6秒钟往MySQL插入100万条数据!然后删库跑路!
教你如何6秒钟往MySQL插入100万条数据!然后删库跑路! 由于我用的mysql 8版本,所以增加了Timezone,然后就可以了 前提是要自己建好库和表. 数据库test, 表user, 三个字段 ...
- PHP实现插入100万条数据优化
第一种方法一条一条执行插入,结果会很慢 <?php header("Content-Type:text/html;charset=utf-8"); date_default_ ...
- Oracle中插入100万条数据
在做项目的工程中,需要数据库中存在大量的数据进行程序的验证,但是我们又没有数据,这时就需要我们自己手动建一个表,插入大量数据,进行验证. 那么插入大量数据的sql语句如下: insert into E ...
- Mysql如何快速插入100万条记录?
1.java程序拼接insert带多个value,使一次提交多个值. 2.插入数据之前先删除索引(注意主键不能删除),然后插入数据,最后重建索引 3.可以设置手动commit,用来提高效率 4.使用批 ...
- 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来
我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...
- Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)
SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度.例如:向数据库中插入100万条数 ...
- 插入1000万条数据到mysql数据库表
转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...
- 极限挑战—C#+ODP 100万条数据导入Oracle数据库仅用不到1秒
链接地址:http://www.cnblogs.com/armyfai/p/4646213.html 要:在这里我们将看到的是C#中利用ODP实现在Oracle数据库中瞬间导入百万级数据,这对快速批量 ...
- 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...
- 使用hibernate在5秒内插入11万条数据,你觉得可能吗?
需求是这样的,需要查询某几个表的数据,然后插入到另外一个表. 一看到需求,很多人都会用hibernate去把这些数据都查询出来,然后放到list中, 然后再用for循环之类的进行遍历,一条一条的取出数 ...
随机推荐
- mac上安装vue
安装node.js brew install nodejs node -v #查看版本 给nodejs模块安装目录设置访问权限 sudo chmod -R 777 /usr/local/lib/nod ...
- 【C# .Net】继承重写父类方法,C# 与 JAVA的不同之处
一直都没仔细研究c#重写,new关键字的作用,最近在回头看书,复习C#基础的时候才发现了 C# 重写和 JAVA大不一样的地方. C# 提供特定实现的子类可以重写(override)标识为 virtu ...
- 第123篇: JS函数属性与方法
好家伙,本篇为<JS高级程序设计>第十章"函数"学习笔记 ECMAScript 中的函数是对象,因此有属性和方法. 1.函数属性 每个函数都有两个属性:length 和 ...
- cw attack
- 青少年CTF-Crypto(新手版本2.0,无factor1)
凯撒大帝的征讨之路 题目: lnixoa{1x2azz7w8axyva7y1z2320vxy6v97v9a} 知识点:凯撒加密 我的题解: import base64 #shift得出移位多少,移位后 ...
- Java super关键字使用 +案列
1 package com.bytezero.supertest; 2 /* 3 * 4 * super关键字使用 5 * 1.super:理解为 父类的 6 * 2.super可以使用调用:属性,方 ...
- baidu 突然打不开了 20210621
换了个dns 123.125.81.6 114.114.114.114
- Python 动态网页Fetch/XHR爬虫——以获取NBA球员信息为例
Python 动态网页Fetch/XHR爬虫--以获取NBA球员信息为例 动态网页抓取信息,一般利用F12开发者工具-网络-Fetch/XHR获取信息,实现难点有: 动态网页的加载方式 获取请求Url ...
- Docker 仓库国内镜像源
1.仓库镜像对应表 原始 镜像 docker.io ***.mirror.aliyuncs.com(点进去登录查看) hub-mirror.c.163.com dockerproxy.com quay ...
- Python配置文件使用教程
在 Python 应用程序开发过程中,配置文件扮演着重要的角色.配置文件可以用来存储应用程序的各种设置.选项和参数,使得程序更加灵活和可配置.本文将介绍 Python 中如何使用配置文件,并提供一些常 ...