简介完整收录双色球自2003年2月首期开售至2025年4月15日全部3287期开奖号码每期均包含期号、开奖日期、6个红球1—33与1个蓝球1—16字段完整且按时间顺序排列期号连续无断档可作为彩票历史数据研究、频次统计与可视化练习的可靠基础数据集。压缩包仅213KB共5个文件核心为Excel表格与MySQL结构化SQL脚本前者可直接在Excel中筛选排序、制作图表后者导入数据库后可实现批量查询、冷热号追踪、连号与区间分布等深度分析另附Python辅助脚本方便用户按需进行二次数据处理。已有1602人学习下载对于数据分析初学者可直接用这份数据练习数据清洗、统计和可视化对于开发者可作为自建预测模型的历史样本也适用于站点开发时的演示数据。整包数据无缺失、无重复省去自行搜集、爬取和整理的繁琐过程。1. 双色球历史数据包的价值3287期的Excel与MySQL双轨数据能做什么某开发者想统计双色球冷热号搜了一圈却发现开源数据要么只覆盖最近三年要么Excel表头混乱、SQL文件注释里塞着乱码。他最后用到的方案是这个2003-2025全部3287期开奖记录数据包Excel和MySQL两个格式齐全不用再自己当爬虫也不用跟残缺的历史表格搏斗。这个包解决的是“原始开奖号码到可分析数据”之间那段很无聊的脏活。双色球规则是33选6红球加16选1蓝球3287期堆在一起红球01到33、蓝球01到16的出现次数就成了一张分布表。适合用来做冷热统计、连号遗漏、按年份的走势对比也适合把历史期号扔到MySQL里做长期查询和报表。数据分析新手能用Excel直接看工程方向的用户能直接把MySQL文件导入本地不用改任何字段。这里要先把丑话说在前面这段统计只描述历史分布不代表任何预测中奖能力。你要的是历史数据的组织能力和查询便利性数据包在这件事上能帮上大忙。2. 数据目录与双轨结构Excel工作表与MySQL表分别解决什么问题2.1 表头口径与Excel工作表结构先看整体。数据包在解压之后是这样的ssq_2003_2025/ ├── 双色球开奖记录.xlsx ├── 双色球开奖记录.sql ├── README.txt └── 双色球开奖记录.csv部分版本会附带CSV中转文件这个文件列表是按此类数据包的常见打包方式写的是否带CSV以实际包为准。Excel打开后核心工作表一般是“开奖记录”列结构多数是期号、开奖日期、红球1到红球6、蓝球。期号是文本型字段例如2025001。期号按年份重新编号如果存成数字前面的0会被吃掉文本型能保住七位期号排序也不跳。开奖日期用ISO顺序的2023-05-11比2023/5/11更适合被Excel的筛选和透视表识别。这里有个常见争议既然开奖号码习惯写成“03 07 12 16 21 28 09”为什么数据包要把红球拆成六列而不是给一列原因是做冷热号统计时需要把六个红球并成一个“号码集合”SQL里用UNION ALL可以做到而做连号、奇偶比这类特征分析时又需要六个红球在独立列。如果数据包给的是“中奖号码”合并字符串你早晚要自己拆拆的过程中还会遇到前导零的问题。拆成独立列反而是最省后续工作量的设计。2.2 MySQL表结构与字段类型MySQL文件打开后是建表语句和INSERT语句。表名一般是ssq_records字段设计大致如下字段类型说明idINT UNSIGNED AUTO_INCREMENT主键自增issue_numberVARCHAR(7) NOT NULL期号文本型避免前导零丢失open_dateDATE NOT NULL开奖日期red1TINYINT UNSIGNED红球1范围1-33red2-red5TINYINT UNSIGNED红球2到红球5同理blueTINYINT UNSIGNED蓝球范围1-16UNIQUE KEY uk_issue (issue_number)唯一索引防止重复导入TINYINT UNSIGNED范围是0到255对1-33和1-16绰绰有余而且比SMALLINT节省一半存储。3287行数据占用空间本来就小真正重要的不是存储大小而是约束。期号上的唯一键一旦建立重复导入就会直接报错这是数据包防你反复INSERT的重要防线。如果SQL文件里有INSERT INTO ssq_records ... VALUES (1,2003001,2003-02-23,10,11,12,13,26,05)这种写法说明字段顺序已固定。你后续写的导入脚本要跟它一致别在前面多加一列。2.3 双轨选型什么时候用Excel、什么时候用MySQLExcel适合临时性分析、肉眼扫表格、跟历史走势图表做对照。3287行在一张Excel表里不算大配上条件格式红球出现频率一刷就能看出大概。但这种用法只证明“能用”规则是所有查询、统计、联动分析都放MySQL做。MySQL适合需要聚合、连接、子查询的用户。比如按年份分组算出每年蓝球出现最多的号码在3287期里找红球三个连号的期数把两个冷号的期号合并做交叉验证。这些事情用Excel做要拖透视表至少十几步在MySQL里一条SQL就出结果。我一般习惯是Excel只作为人工抽查和出图辅助MySQL作为数据源仓库。两个格式互相校验不容易让错误潜伏在报表里。2.4 字段口径核对拿到手先别急着算双色球兑奖只看号码集合不看摇出顺序所以历史数据表通常把红球按升序整理。但有极少数Excel版本会把红球按摇出顺序存放。区分办法很简单看前几期开奖记录如果红球一列大于红球二列说明不是升序表做连号分析时要先排一次序。另一个口径是日期字段部分数据包的日期列会附带星期几例如“2023-05-11 周四”这种带后缀的日期在存日期类型时容易报错导入MySQL前要先用Excel分列把星期去掉。3. 把历史记录导入MySQL一条从文件校验到导入验证的完整流程3.1 导入前先验证文件直接执行陌生SQL文件是有风险的有些人下载的数据包里有重复期号、半角全角符号混用、隐藏的行尾符。如果一上来就执行报错之后很难分清是环境问题还是文件问题。所以第一步是静态校验不打开数据库。用文本编辑器打开SQL文件看前20行重点是建表语句是否带DEFAULT CHARSETutf8mb4INSERT语句是否按期号升序排列。再统计INSERT语句出现的次数。用命令查找期号的出现情况来验证期号个数。Windows下用PowerShellSelect-String -Path 双色球开奖记录.sql -Pattern INSERT INTO | Measure-Object | Select-Object CountMac/Linux下用grepgrep -c INSERT INTO 双色球开奖记录.sql这条命令统计的是INSERT语句出现次数不是数据行数。如果SQL文件把一整张表的数据放在一条多VALUES的INSERT里统计结果会是1甚至更少。所以更稳的验证是看“期号个数”grep -oE [0-9]{7} 双色球开奖记录.sql | sort -u | wc -l先把七位期号抽出来排序去重再数个数。如果明显少于3287就要怀疑文件是否被截断过。时间段跨年也容易漏2003001和2025001都是七位数字排序后直接检查首尾期号即可。提示这类历史数据包的期号是全年连续编排的一年约150期左右不按开奖日连续。核对数量比核对日期列表更可靠。3.2 两种导入路径如果数据包里带的是SQL文件用命令行source导入最不容易出错mysql -u账号 -p -h 127.0.0.1 --default-character-setutf8mb4 双色球开奖记录.sqlsource导入时mysql客户端会一个语句一个语句地执行。utf8mb4字符集在建表和插入之间保持一致不会因为系统LANG环境变量不同而出现乱码。如果你的MySQL装在Windows上注意cmd的代码页要和文件编码匹配大多数情况下这条命令已经足够。如果包内是CSV而你想自己建表再导入走LOAD DATADROP TABLE IF EXISTS ssq_records; CREATE TABLE ssq_records ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, issue_number VARCHAR(7) NOT NULL, open_date DATE NOT NULL, red1 TINYINT UNSIGNED NOT NULL, red2 TINYINT UNSIGNED NOT NULL, red3 TINYINT UNSIGNED NOT NULL, red4 TINYINT UNSIGNED NOT NULL, red5 TINYINT UNSIGNED NOT NULL, red6 TINYINT UNSIGNED NOT NULL, blue TINYINT UNSIGNED NOT NULL, PRIMARY KEY (id), UNIQUE KEY uk_issue (issue_number) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; LOAD DATA LOCAL INFILE /path/to/双色球开奖记录.csv INTO TABLE ssq_records CHARACTER SET utf8mb4 FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY LINES TERMINATED BY \n IGNORE 1 ROWS (issue_number, open_date, red1, red2, red3, red4, red5, red6, blue);这段代码的关键参数LOCAL让mysql客户端先把本地文件上传到服务端临时目录解决服务端没有文件路径权限的问题。只有开启了local_infile参数才生效MySQL 8.0默认关闭需要先用SET GLOBAL local_infile 1开启。FIELDS TERMINATED BY ,CSV的列分隔符。如果Excel导出时用了分号这里要改成;。OPTIONALLY ENCLOSED BY 允许字符串用引号括起来处理含逗号的字段。双色球号码本身不会带引号但日期文本在部分Excel版本导出时会带。LINES TERMINATED BY \n文件换行符。Windows下另存为的CSV可能用\r\n改成\r\n更稳否则会出现一列被拆成两半的情况。IGNORE 1 ROWS跳过标题行。如果你的CSV没有标题行删除这一句。括号里列出的字段顺序明确指出列顺序而不是让MySQL按表结构自动对应两个文件字段顺序不一致时不会登错位。3.3 导入后的验证导入完最担心的是“语句执行没报错但实际少了几行”。验证脚本写三条SELECT COUNT(*) AS cnt, MIN(issue_number) AS first_issue, MAX(issue_number) AS last_issue FROM ssq_records;这条查询能同时看总数和首尾期号。总数预期是3287首期是2003001。然后再查最新一期的开奖号码是否完整SELECT issue_number, open_date, red1, red2, red3, red4, red5, red6, blue FROM ssq_records ORDER BY issue_number DESC LIMIT 3;检查最大期号对应最新一期且每个号码都是非空数字而非NULL。如果首尾都对再抽查中间某一年例如2020年第100期前后避免只有首尾完整而中间断档的情况。4. 导入与使用的常见问题排查五个最容易翻车的地方4.1 报错Unknown character set: utf8mb4现象source语句执行到建表附近脚本直接停在ERROR 1115 (42000): Unknown character set: utf8mb4整包建不出来。原因老版本MySQL 5.5及以下不认识utf8mb4。utf8mb4是在MySQL 5.5.3之后才正式引入的字符集。双色球数据只有数字和中文日期用不上四字节Emoji字符集但SQL文件里写了utf8mb4就会在这个版本被卡住。解决两选一。要么把建表语句里的utf8mb4统一改成utf8双色球数据只有数字、日期、中文提示utf8足够用要么把服务器换成MySQL 5.7以上。我建议后者因为utf8在新版本里的排序和索引行为已经边缘化后续做统计分析没必要给自己留一个旧字符集。4.2 MySQL Workbench导入卡住进度条不动现象Workbench的Data Import一直停在“Importing”表格里看不出任何进度等了几分钟还是原样。原因Workbench导入超大SQL文件时文本编辑器会先把整个文件读进内存再分段执行。文件如果几百MB内存就会被占住。双色球3287行SQL其实不大但如果SQL文件里注释和多余空行特别多Workbench还是会表现得像睡着了一样。解决退出Workbench的导入界面退回命令行source。命令行一次读一行内存占用低失败位置也更直观。真要用图形工具就把.sql文件拆成建表部分和插入部分分别运行。4.3 Excel打开显示一串数字而不是日期现象开奖日期这一列在Excel里显示为44312之类的数字。原因日期在底层存的就是从1900年起的序列值单元格格式写成“常规”时就会露出数字本相。这不代表数据坏了只是格式没设好。解决选中日期列右键设置单元格格式为“日期”或“yyyy-mm-dd”自定义格式。如果整列都被数字占据用“数据-分列”向导第二步选“日期”格式再定一次。如果日期列里混着“2023-05-11 周四”这种文本用分列按空格拆分只保留日期部分。4.4 统计出来的期数少于3287现象SELECT COUNT(*)返回3200和包自述的3287不一致或者Excel筛选统计期数明显偏少。原因导入前没有清表导致重复期号被唯一索引挡住更常见的是SQL文件或CSV在下载过程中被断点续传或网盘转存截断过末尾几十期丢了。这种情况属于源头文件不完整。解决先执行TRUNCATE TABLE ssq_records清空旧数据再重新导入。导入完成后先做3.3的COUNT验证。如果确认文件本身缺数据回下载源重新下载下载完成后先做期号数量验证再谈导入。4.5 MySQL 8的认证插件导致旧工具连不上现象某些老版本图形客户端连MySQL 8连接时报Authentication plugin caching_sha2_password cannot be loaded。原因MySQL 8默认的认证算法是caching_sha2_password而老客户端只实现了mysql_native_password。解决如果你用的图形工具不支持新插件创建专用账号时指定认证方式CREATE USER ssq_userlocalhost IDENTIFIED WITH mysql_native_password BY 你设置的密码; GRANT SELECT ON ssq_db.* TO ssq_userlocalhost;纯粹本地分析的话直接用MySQL自带命令行最省心连这个问题都不会遇到。数据包里没有的用户名密码都按你自己的环境设置不要把账号写成包里的固定值。5. 进阶用法把开奖数据变成冷热号与走势分析的第一张宽表5.1 冷热号统计拿到3287期原始数据后第一件值得做的事是冷热号统计。双色球的“冷热”是对历史出现频次的俗称出现次数多算热长期没出现算冷。用SQL把六个红球并成一列统计SELECT ball_number, COUNT(*) AS appear_count FROM ( SELECT red1 AS ball_number FROM ssq_records UNION ALL SELECT red2 FROM ssq_records UNION ALL SELECT red3 FROM ssq_records UNION ALL SELECT red4 FROM ssq_records UNION ALL SELECT red5 FROM ssq_records UNION ALL SELECT red6 FROM ssq_records ) AS all_balls GROUP BY ball_number ORDER BY appear_count DESC;UNION ALL把红球1到红球6的每一行都叠起来成为“每个号码因为出现过一次就占一行”的长表然后按1到33编号去分组得到每个号码的累计出现次数。蓝球同理只要把六个红球列换成blue列即可。蓝球只有1到16统计量小但对跟号习惯的分析反而更有参考意义。5.2 走势与遗漏“遗漏”是指号码连续多少期没出现。Excel做遗漏需要辅助列和偏移公式而SQL可以用窗口函数在3287期里直接算出来。数据量不大3287行加一组小表一秒内能跑完。把计算结果回填到Excel再配上期号作为横轴就是一张可以叠加趋势线的走势宽表。注意期号不是连续的日期走势图的横轴用期号而不是开奖日期否则休市位置会出现空档。从那以后我每次拿新一期开奖数据都强制走一遍三个检查字段类型核对red列必须是整数、期号唯一性UNIQUE KEY不能去掉、范围校验红球在1到33之间且蓝球在1到16之间。三个检查不花一分钟但能挡住大部分导入事故和数据包缺期问题。数据包提供Excel和MySQL双份正好让两边的检查互相印证——Excel里看首尾期号MySQL里查COUNT和连续性两边对得上再往下写走势代码才踏实。希望帮到你。本文还有配套的精品资源点击获取