简介:这份数据集围绕“唐诗三百首”整理成结构化资源,面向需要中文文本数据、数据库建表练习或诗词展示项目的开发者与学习者。包内共4个文件,依次提供SQL、JSON、CSV、XLSX四种格式:SQL可直接导入关系型数据库,JSON便于前端或接口直接使用,CSV兼容常见数据分析工具,XLSX适合非技术背景的读者快速浏览。压缩包整体约141KB,体量小巧但覆盖多种使用场景,数据量为320条,能支撑从基础查询到简单文本挖掘的练习需求。当前已有1452人学习下载。拿到这份资源后,可免去从零收集、校对和格式转换的麻烦,直接用于数据库课程设计、诗词分类展示、教学课件素材或文本分析实验。根据具体任务选择合适格式,即可将精力集中于核心逻辑与业务实现。
1. 从一份41KB的数据集说起:唐诗三百首的四种打开方式
一位做古诗推荐系统的开发者前阵子问我,有没有现成的唐诗结构化数据能拿来即用,不要那种还得自己爬网页、清洗半天的原始语料。我把这份唐诗三百首数据集丢给他——压缩包解开才41KB,320条记录,SQL、JSON、CSV、XLSX四种格式各一份。他当场把SQL文件导进本机数据库,一条查询语句跑完,整个系统的语料层就落地了。这个数据集的价值在于,它不是一个孤立的txt文本,而是一套已经完成“数据库落地所需全部形态”的工程化资源。适合做课程设计、本地知识库实验、中文文本处理练习,以及任何需要结构化唐诗文本作为输入的开发场景。
2. 四种格式背后的选型逻辑:SQL、JSON、CSV、XLSX分别解决什么问题
2.1 字段设计:id、title、author与正文的存放方式
打开tangshi300.json,先别急着写加载逻辑,把其中一条记录完整看一遍。这份数据集的记录大概长这样:
{ "id": 1, "title": "静夜思", "author": "李白", "paragraphs": [ "床前明月光", "疑是地上霜", "举头望明月", "低头思故乡" ] }json文件里的记录字段就是这套数据集的底层结构。核心就四样:id、title、author、正文。正文有的版本存成paragraphs数组,每个元素是一句;有的版本存成content字符串,整首诗是一整块文本。数组形态便于逐句渲染、对齐和做逐句统计;字符串形态便于全文搜索和文本相似度计算。两种形态各有适用场景,不存在谁更优的问题。
id字段值得多说一句。数据集里为什么有了title和author还要单独编号?因为数据库主键不能重复,而唐诗作品里存在同题同作者的重复情况。举例来说,某些诗人在不同时期写了同题目的诗,题名和作者完全一致,只有正文不同。这种情况下如果用title加author做联合主键,插入第二首时直接冲突。用自增id才能保证每条记录枚举唯一。
字段整体走的是极简路线。有的数据版本还会附带tags、dynasty、notes这类附加信息,但这份数据没有花哨扩展,核心数据就三个维度:谁写的、题目是什么、内容是什么。从存储类型看,title是典型的短文本,用VARCHAR(255)足够;正文是长文本,建表时给TEXT类型更稳妥。
2.2 格式选型:四种格式在不同工程链路里的角色
同一份数据放四种格式,不是打包习惯问题,是四种格式在工程链路里的角色差异很大。
| 格式 | 核心用途 | 适合人群 | 上手成本 |
|---|---|---|---|
| SQL | 直接导入数据库 | 数据库使用者 | 需要本机有MySQL或兼容数据库 |
| JSON | 程序内读取 | 后端开发、脚本编写 | 几乎所有语言原生支持 |
| CSV | 数据交换与批量处理 | 数据分析、ETL流程 | 任何文本工具和Excel都能打开 |
| XLSX | 人工查看与编辑 | 文档整理、教学场景 | Excel或WPS双击打开 |
SQL文件解决的是“入库效率”问题。它把建表语句和INSERT语句全部写好了,拿到文件就能导入,省掉自己设计表结构的时间。这是四种格式里唯一“面向数据库”的形态,也是这份资源里工程价值最高的一份。
JSON解决的是“程序内读取”问题。Python的json模块、JavaScript的JSON.parse都能零配置读取。做静态数据挂载、接口返回样例、单元测试数据,JSON都是最不容易出问题的选择。它跟Python的dict/list结构几乎同构,读到内存里不需要额外转换逻辑。
CSV解决的是“跨工具流通”问题。CSV本身没有类型系统,所有字段都是字符串形态,但兼容性极好。Excel能打开,各种ETL工具能读,pandas读CSV的速度比读JSON还快。拿到CSV后先导入pandas做一次清洗,再导出成别的格式,是很标准的操作路径。
XLSX解决的是“给非技术角色看”的问题。导师、同事或合作方需要在表格里做筛选、排序、核对时,xlsx是最稳妥的交付格式。虽然xlsx本质是zip压缩的XML集合,在Excel里打开就是一张规整的二维表,不需要解释什么是字段、什么是记录。
选型判断标准其实很朴素:数据落在哪一层平台,就用对应的格式。落数据库用SQL,落应用层用JSON,落分析流水线用CSV,落人工审核用XLSX。这份数据把四条路径全部铺好了。
2.3 一致性校验:数据文件之间怎么互相验证
四种格式理论上内容完全一致,因为它们通常是由同一份源数据脚本批量导出的。拿到压缩包后,可以先做一次快速交叉验证,确认SQL里的INSERT条数、JSON数组长度、CSV数据行数三者统一。这个验证思路很简单:在命令行里数一下CSV行数,再在Python里数一下JSON长度,两边对比即可。
wc -l tangshi300.csvimport json with open('tangshi300.json', 'r', encoding='utf-8') as f: data = json.load(f) print(len(data) if isinstance(data, list) else len(data.get('poems', [])))wc -l统计的是物理行数,如果CSV里没有多行字段的干扰,这个数字减掉表头就是记录数。JSON那边load进来后如果是list直接取长度,如果是dict则要找到实际装载记录的键再取长度。两边数字能对上是理想情况,对不上时优先以JSON里的数组长度或SQL文件里的INSERT条数为准。
3. SQL导入数据库:从命令行到可视化工具再到LOAD DATA
3.1 用mysql命令导入tangshi300.sql的完整步骤
假设本机已经装了MySQL 5.7或8.0,目标是把tangshi300.sql导进一个名为tangshi的数据库。第一次操作的新手经常犯的错是直接执行导入,但库里根本没有这个库名,所以第一步必须建库。
mysql -uroot -p -e "CREATE DATABASE IF NOT EXISTS tangshi DEFAULT CHARSET utf8mb4;" mysql -uroot -p --default-character-set=utf8mb4 tangshi < tangshi300.sql第一行命令用-e参数直接执行SQL语句,创建一个名为tangshi的数据库。注意DEFAULT CHARSET utf8mb4这个参数,它是处理中文文本的底线配置。如果把字符集设成latin1,后面导入的中文全部会变成乱码或问号。第二行命令用Shell重定向把SQL文件内容喂给mysql客户端,导入到tangshi库中。--default-character-set=utf8mb4参数强制客户端按utf8mb4编码传输数据,这个参数在中文环境下必须加。
导入完成后,验证数据落没落对:
mysql -uroot -p tangshi -e "SHOW TABLES;" mysql -uroot -p tangshi -e "SELECT COUNT(*) FROM poems;"SHOW TABLES看表结构有没有建出来。如果SQL文件里建的表名是poems,第二行命令返回的数字应该和摘要里描述的数据量一致。如果返回的是一大串报错,第一步先看错误码和靠近报错位置的SQL片段,绝大多数问题出在字符集不匹配和SQL版本语法差异上。
除了命令行,DBeaver、Navicat、DataGrip这类可视化工具也可以直接执行SQL文件。操
本文还有配套的精品资源,点击获取