Skip to content

MySQL 8.4 + Poetry 数据库导入记录

本文档总结了在 Windows 11 + Winget 安装 MySQL 8.4 的环境下,从安装 MySQL 到成功导入 85 万首古诗词数据的完整流程。


1. 安装 MySQL

使用 Winget 安装:

powershell
winget install Oracle.MySQL

安装完成后,MySQL 服务未自动注册,需要手动安装服务:

powershell
cd "C:\Program Files\MySQL\MySQL Server 8.4\bin"
mysqld --install MySQL84

初始化 MySQL 服务(生成临时 root 密码):

powershell
mysqld --initialize --console

输出中会显示临时密码,例如:

A temporary password is generated for root@localhost: jnhaG(C-C2fc

启动 MySQL 服务:

powershell
net start MySQL84

2. 登录 MySQL

powershell
mysql -u root -p

输入临时密码登录后,建议修改 root 密码:

sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

检查数据库列表:

sql
SHOW DATABASES;

3. 创建 poetry 数据库和表

sql
CREATE DATABASE poetry CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE poetry;

CREATE TABLE poetry (
  id INT NOT NULL AUTO_INCREMENT,
  title CHAR(200),
  dynasty CHAR(50),
  author CHAR(100),
  content TEXT,
  PRIMARY KEY (id)
);

⚠️ 使用 utf8mb4 以支持古诗中的生僻字。


4. 检查 secure_file_priv 设置

sql
SHOW VARIABLES LIKE '%secure_file_priv%';
  • 返回 NULL → 不限制导入目录
  • 可直接从任意路径导入 CSV 文件

5. 导入 poetry.csv 数据

5.1 确认 local_infile 是否开启

sql
SHOW VARIABLES LIKE 'local_infile';
  • 返回 ON → 可直接使用
  • 返回 OFF → 执行:
sql
SET GLOBAL local_infile = 1;

5.2 导入数据

假设 poetry.csv 位于 D:\forfun\Poetry\poetry.csv

sql
USE poetry;

LOAD DATA LOCAL INFILE 'D:\\forfun\\Poetry\\poetry.csv'
INTO TABLE poetry
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(title, dynasty, author, content);

导入成功示例:

Query OK, 853385 rows affected (8.12 sec)

如果重复导入会出现 1706770 行,需注意避免重复执行。


6. 验证数据

6.1 查询总行数

sql
SELECT COUNT(*) FROM poetry;

应返回:

853385

6.2 查询示例

sql
-- 搜索南昌相关诗句
SELECT * FROM poetry
WHERE content LIKE '%南昌%' OR title LIKE '%南昌%'
LIMIT 20;

-- 搜索滕王阁相关诗句
SELECT * FROM poetry
WHERE content LIKE '%滕王阁%' OR title LIKE '%滕王阁%';

7. 可选优化:索引

为了在 App 中快速搜索,可增加索引:

sql
ALTER TABLE poetry ADD INDEX idx_title(title);
ALTER TABLE poetry ADD INDEX idx_author(author);
ALTER TABLE poetry ADD FULLTEXT INDEX idx_content(content);
  • FULLTEXT 索引用于全文搜索,提高查询效率

8. 总结

  1. MySQL 8.4 Winget 安装默认未注册服务,需要手动 mysqld --install
  2. 初始化会生成临时 root 密码
  3. secure_file_priv = NULL → 可以从任意路径导入 CSV
  4. 使用 LOAD DATA LOCAL INFILE 导入大数据集最稳定
  5. 导入完成后即可验证总行数和内容
  6. 建议加索引以提升搜索性能