2020-09-15
mysql数据库收集和导入数据集
环境
linux ubuntu 18.04LTS
mysql-5.7.31
数据集的收集
- 首先试了一下World Bank
下载该数据集时出现submit
始终无法点的情况,以待解决
2. 再尝试RBI数据集
首页就能看到许多数据集,可以用chrome翻译成中文
随便点一个:
点击pdf的图标,再点击pdf里的超链接,可以直接下载到数据集
随便下一个,数据集如图所示:
再将该表转为csv格式,方便后续数据库读取
ELECT07022016_FEB18.csv
数据集导入mysql数据库
- mysql小数类型的使用
- 在数据库中创建表
1 | create table ELECT07022016_FEB18( |
查了下load data infile的用法,暂时没找到忽略最后几行的办法,因此使用了较大的varchar来存储第一格
下图是看最长的一个有多少字符
看看创建的表
创建成功,然后感觉名字太复杂了,不好操作,改一下名:
1 | rename table ELECT07022016_FEB18 to eps_rd; |
- 用
load
导入到数据库中
1 | load data infile '/home/hjy/桌面/everyday-learning2/2020-9-15/ELECT07022016_FEB18.csv' |
出现报错:
参考:将csv 文件存入mysql 报错The MySQL server is running with the –secure-file-priv option so it cannot execute,显示secure_file_priv文件路径
1 | show variables like '%secure%'; |
然后将文件拷贝至该路径下(文章中可以永久修改,解决该问题,但要重启mysql,为了简单起见,直接复制)
1 | sudo cp /home/hjy/桌面/everyday-learning2/2020-9-15/ELECT07022016_FEB18.csv /var/lib/mysql-files/ |
再次导入,发生如下报错:
参考:mysql 用load data 导入数据时,数据被截断问题
1 | set sql_mode=''; |
再次运行,导入成功:
- 后续操作
- 删除为空的行
1 | delete from eps_rd where data=''; |
- 拆分表
1 | create table month_eps as (select * from eps_rd where data like '___-%'); |
把18年每天的数据分出来还有点麻烦,这里用了正则表达式
参考:MySQL正则表达式
1 | create table feb_esp as |
再将其它信息存起来
1 | create table note as select data from eps_rd where data like '____%' and data not like '___-__'; |
最后,我想给更改一下列名,把data
改成notes
可在网上没查到方法(好多写的是用sp_name更改,但我不会用),说来惭愧。
我的java IDE:IntelliJ IDEA里有连结数据库的功能,然后用里面的工具成功更改列名。
1 | alter table note change data notes varchar(200) null; |
over!