大数据分析期末项目——构建数据库
如何构建期末项目中的数据库
步骤
-
获取文件
papers_with_predictions.csv
可见仓库https://github.com/NJU-ymhui/big-data-analysis-final-classifier,位于main分支下的`mlp/`文件夹下
-
可以选择运行MySql手动在数据库中添加对应的数据表,也可以在配置文件
application.yml
中添加如下内容spring:
jpa:
hibernate:
ddl-auto: update
database-platform: org.hibernate.dialect.MySQL5Dialect然后启动spring后端,这将会在数据库中自动创建数据表
手动添加数据表的示例如下
CREATE TABLE paper (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
abstract TEXT NOT NULL,
category VARCHAR(50) NOT NULL,
year INT NOT NULL
); -
执行
mysql -u root -p
登录数据库,之后执行下面的指令use database big_data_analysis; -- 请使用你自己的数据库名
LOAD DATA INFILE 'path\\to\\your\\papers_with_predictions.csv'
CHARACTER SET utf8mb4
INTO TABLE paper
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(title, abstract, category, @year, id)
SET year = CAST(@year AS UNSIGNED);
可能遇到的问题
-
ERROR 1074 (42000): Column length too big for column 'abstract' (max = 16383); use BLOB or TEXT instead
字符串过长,执行
```sql
ALTER TABLE paper MODIFY COLUMN abstract TEXT; -
ERROR 1406 (22001): Data too long for column 'abstract' at row 1
确保路径中没有中文
解决方法同上
3. ```sql
No such file or directory -
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
则说明没有任何路径(NULL)的文件可以加载,请找到MySQL配置文件`my.ini`或`my.conf`,通常位于MySQL的安装位置(比如我的在`E:\MySQL\mysql-8.0.36-winx64\mysql-8.0.36-winx64`下)或者`C:\\AppData\\MySQL\\对应版本`或`C:\\Program Files\\MySQL\\对应版本`下,编辑文件,在`[mysqld]`下添加规则
这是因为MySQL服务启用了`secure-file-priv`, 这将导致只能加载指定路径的文件
使用`SHOW VARIABLES LIKE 'secure_file_priv';`查看输出,若输出
```sql
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | NULL |以此禁用`secure-file-priv` 之后重启MySQL 使用`win+x`以管理员身份运行终端,执行secure-file-priv=""
启动成功后,再次登录MySQL,重复**步骤3**> net stop mysql
> net start mysql -
ERROR 1300 (HY000): Invalid utf8mb4 character string: '"..."'
如果还是不行(可能csv的数据被污染了),请使用https://github.com/NJU-ymhui/big-data-analysis-final-classifier下的`clean.py`清洗csv表格
字符集不匹配,同4修改配置文件中所有涉及编码的地方为utf8,重启MySQL
之后登录时`mysql -u root -p --default-character-set=utf8`指定字符集
*注:如果还不行可能还需要把已经建好的数据库和数据表的字符集也改掉,使用*
```sql
ALTER DATABASE big_data_analysis
CHARACTER SET utf8
COLLATE utf8_general_ci;
ALTER TABLE paper
CONVERT TO CHARACTER SET utf8
COLLATE utf8_general_ci;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 (๑>ᴗ<๑)!
评论