首页
学习
活动
专区
圈层
工具
发布

Python 基于Python从mysql表读取千万数据实践

场景: 有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_bar_record表读取1000w条唯一的waybill_no,然后作为INSERT SQL语句的一部分...waybill_no字段中 tl_waybill_bar_record ts_order_waybill 另外tl_waybill_bar_record表waybill_no有部分重复 实现思路 思路1、利用MySql...的LIMIT offset, length分页功能+ORDER BY primary_key按主键排序,循环读取数据,然后解析读取的数据,直到满足条件停止 例子:按5000条记录进行分页,循环2000000...,从第0条记录开始,按seq_id主键升序排序,每次从不同的分页读取5000条记录 for i in range(0, 2000000): query = "SELECT waybill_no,.../result/waybill_no.txt', 'r+', encoding='utf-8') waybill_no_set = set() # 用于存储获取的waybill_no # 读取上次获取的数据

3K10

Python 读取千万级数据自动写入 MySQL 数据库

作者:python与数据分析 链接:https://www.jianshu.com/p/22cb6a4af6d4 Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到...python 操作数据库,读写更新等,数据库可能是 mongodb、 es,他们的处理思路都是相似的,只需要将操作数据库的语法更换即可。...本篇文章会给大家系统的分享千万级数据如何写入到 mysql,分为两个场景,三种方式。 一、场景一:数据不需要频繁的写入mysql 使用 navicat 工具的导入向导功能。...场景二:数据是增量的,需要自动化并频繁写入mysql 测试数据:csv 格式 ,大约 1200万行 import pandas as pd data = pd.read_csv('....最全的三种将数据存入到 MySQL 数据库方法: 直接存,利用 navicat 的导入向导功能 Python pymysql Pandas sqlalchemy

5.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL怎样优化千万级数据

    首先要声明的就是,千万级数据对于MySQL来说就是不太合理的一个存在。优化MySQL千万级数据策略还是比较多的。...分表分库创建中间表,汇总表修改为多个子查询这里讨论的情况是在MySQL一张表的数据达到千万级别。表设计很烂,业务统计规则又不允许把sql拆成多个子查询。...当MySQL一张表的数据达到千万级别,会出现一些特殊的情况。这里主要是讨论在比较极端的情况下SQL的优化策略。先来个千万级数据通过存储过程传递函数制造1000万条数据。...const: 表示 MySQL 在查询中找到了常量值,这是在连接的第一个表中进行的。由于这是常量条件,MySQL 只会读取一次表中的一行数据。例如,通过主键访问一行数据。...当 MySQL 需要执行回表操作时,会发生额外的磁盘访问,因为需要读取主表中的数据。这可能会导致性能下降,特别是在大型数据表中或者在高并发环境中。

    88610

    小程序读取数据超过20 云函数读取超过100条限制

    看过石头哥云开发基础课的同学肯定都知道,直接在小程序里请求数据每次最多只能返回20条数据,云函数里请求数据每次最多只能返回100条数据,如果想突破这个限制,最好的方式就是做分页,当然分页我在云开发基础里也有教大家...但是限制存在这么一个需求,如果我们想一次性的拿到数据库里存的所有数据呢,比如数据库里有1000条数据,我们想一下子全部拿到,该怎么做呢???...这样我们虽然是可以拿到103条数据,但是要做两次请求,我们该如何做,才能一次请求就可以获取这103条数据呢。...注意事项 云函数单次返回的数据不能超过1M,如果需要超过1M,则需要使用小程序端的数据查询20条20条的进行组合了。...所以如果你一次性要返回很多数据,可以考虑在小程序里直接请求数据库,然后做20条20条的组装。 我下面也会教大家在小程序里做组装。

    2K20

    Mybatis 流式读取大量MySQL数据

    最近公司提了个需求 ,说公司的旧系统的报表导出的时候,数据量超过一万就导不出来了。经过分析,是旧系统做了限制。...在更新的时候,查看了导出时虚拟机GC情况,发现原先程序执行时,内存激增,经过Google决定采用流式读取对sql进行优化。...JDBC三种读取方式: 1、 一次全部(默认):一次获取全部; 2、 流式:多次获取,一次一行; 3、 游标:多次获取,一次多行; mybatis默认采取第一种。...list.add(resultContext.getResultObject()); } }); return list; } dao层:(重点) /** * 流式读取数据...还有就是google出来的那些,要改框架配置的,我的确跟着改了,改了mysql连接参数,还有mybatis setting的配置。嗯,没用

    4.6K20

    MySQL快速导入千万条数据(2)

    接上文,继续测试3000万条记录快速导入数据库。...一、导入前1000万条数据清库、建库、新建表结构、导入前1000万条数据,结果:■ 1000万行,有2索引导入耗时:16分钟Query OK, 9999966 rows affected, 5920 warnings...(16 min 12.95 sec)Records: 9999966 Deleted: 0 Skipped: 0 Warnings: 5920可见,导入千万条数据,性能下降明显。...二、导入前2000万条数据清库、建库、新建表结构、导入前2000万条数据,结果:■ 2000万行,无 索引导入耗时:45分钟Query OK, 19999966 rows affected, 5920...三、导入后面的1000万条数据由于一次导入千万条数据性能较低,因此决定把后面的1000万行,拆分为两部分,分两次导入,如下操作:split -l 6000000 mysql_ab mysql_ab_得到两个文件

    2.5K20

    MySQL快速导入千万条数据(1)

    对于传统的关系数据库如oracle,在大量数据导入方面的效率,我们一般有一个大概的认知,即1分钟以内可以导入千万条数据,而对于MySQL数据库,普遍观点以为性能相对较差,尤其时对于千万级别的数据量,几十分钟...在普遍去IOE的今天,最难的去O也已经势在必行,所以探讨测试一下MySQL的大数据量导入非常有必要。...事实上我们的各个新建项目由于采用了MySQL数据库,在备份恢复时,便会面临大量数据的逻辑导出与导入需求。.../dumpin.sh mysql2.sql > $logfile 2>&1 &测试结果如下:去索引,每1000条批量提交,50万行耗时9分钟Start ...(20220224-21:49:58)Completed...好,现在你还会说,MySQL数据库大批量数据导入性能较差吗?下一步继续测试这3000万条数据全部导入的情况。

    3.6K40

    Mysql两千万数据优化及迁移

    2000W数据对于MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升。 不过这些数据有大量的冗余字段和错误信息,极不方便做统计和分析。...所以我需要创建一张新表,把旧表中的数据一条一条取出来优化后放回新表; 一. 清除冗余数据,优化字段结构 2000W数据中,能作为查询条件的字段我们是预知的。...不过在获取新数据时遇到如下问题。 1.数据量太大,无法一次获取(2000W数据扔到内存挺可怕的); 我们可以通过MySQL的limit语法分批获取。...每次数据的查询速度直接从35秒降到2毫秒…… 2.数据量太大并且数据无法预估,某些特殊数据会导致数据导入失败; 我们有三种方案去将新数据存入新表,分别如下: 2.1一条一条插入数据; 开始肯定会想这种方案一定不行...但是该方案有个好处是能及时发现有问题的数据,修改后再继续执行; 在Oracle中使用『绑定变量』能带来性能提升,正好MySQL也提供了『绑定变量』的功能。

    1.8K10

    Mysql千万级数据量批量快速迁移

    环境 Mysql版本:8.0 迁移说明 Mysql数据的迁移,推荐两种方式 1. mysqldump mysqldump比较适合几十万上百万的较小数据的迁移使用 2. mysql load data...load data infile 语句可以从一个文本文件中以很高的速度读入一个表中,性能大概是 insert 语句的几十倍,比较适合上千万级及更高的海量数据迁移使用 1.mysqldump 1.1导出...使用命令登陆到需要被导入数据的mysql服务上 mysql -uroot -p123456 -h127.0.xxx.xxx -P3306 切换需要导入的数据库 use databasename(数据库名称...导出执行一条sql select * from table(表名) into outfile '/root/data.txt'(导出路径); 亲测大约2千万的数据,导出耗时只要272.24秒 2.2...导入 同样需要先登陆到mysql服务,load data导入执行一条sql,需要先创建一张和原来结构字段数相同的表,注意几点,比如字段类型可以由原来的int>varchar,但是返过来就不行,字段名和表明可以和原来不一样都可以

    4.3K10

    MySQL如何快速生成千万数据量?

    此处利用对内存表的循环插入和删除来实现批量生成数据,这样可以不需要更改mysql默认的max_heap_table_size值也照样可以生成百万或者千万的数据。...#先调用存储过程往内存表插入一万条数据,然后再把内存表的一万条数据插入普通表 CALL add_test_user_memory(10000); #一次性把内存表的数据插入到普通表,这个过程是很快的...把内存表的一万条数据一次性插入普通表,只需要很短的时间就完成了,如下图所示 ? 查询刚刚插入的普通表的数据 ?...因为我没有更改数据库内存表内存大小,所以单次插入内存表一万条数据是没问题的,但是单次插入内存表十万条数据就不行了,会报内存表已满的异常。如下图所示 ?...#循环100次,每次生成10000条数据 总共生成一百万条数据 CALL add_test_user_memory_to_outside(100,10000); ?

    4.5K20
    领券