-
Notifications
You must be signed in to change notification settings - Fork 76
远程数据库使用教程
本教程是写给不懂数据库的小白看的,大神们也可以提出意见,或者直接修改 Wiki 的内容。
作为一个小白,命令行工具肯定比不上图形用户界面。所以我们这里主要介绍图形界面软件的安装、配置和使用。
如果你在此前已经在官网上下载了 MySQL 的社区版,那么已经自带了一个 MySQL Workbench,嗯,折腾了一小时之后你会发现它对新手很不友好,而且语言还是英文的。
这时,你可以选择 Navicat。不过 Navicat 是收费的,这可咋整?
当然是支持正版啦!(这里偷偷附上一个链接:Navicat Premium 12.0.24安装与激活 或 Navicat Premium 12.1.11.0安装与激活,按照步骤来,亲测有效。啊,偷偷用就好啦,我可啥都没说啊。)
安装好后打开 Navicat,可以看到界面是这样的:
当然,你的界面里面肯定没有 bili-view
和 localhost_3306
这两项,这是我之前已经添加好的数据库连接。
数据库就是存放数据的仓库,但是我们一般不想把整个数据库下载下来,而是远程访问和操作,只导出我们感兴趣的部分。
所以组织爬取的数据是存储在远程服务器上的,供大家使用。下面我们就来讲怎么连接远程数据库。
点击 连接 -> MySQL:
弹出如下界面:
填写必要的信息:(这个可以来问爬虫组的小伙伴哦)
- 连接名:这个你随便填什么都可以。
- 主机:
xxx.xxx.com
- 端口:
xxxxx
(一串数字) - 用户名:
xxxx
- 密码:
xxxxxx
点击确定,就会发现左侧栏里出现了一个新的连接,显示的文字就是你之前定义的连接名。
选择该连接,右键 -> 打开连接,这时你会发现它绿了。双击后展开,像这样:
你还可以再展开表,因为我们的数据都是以表的形式存储在数据库里的。
选择一个你感兴趣的表,右键 -> 打开表,比如:
这里的数据默认只显示前 1000 条。
你可以按照不同的字段对数据排序,就像操作 Excel 一样。
如果你想导出某个表,然后到本地处理,可以在左侧栏,选中该表,右键 -> 导出向导,弹出如下对话框:
一般我们选择 CSV 格式,当然你也可以选择其他的文件类型。
下一步。选择要导出的表和保存路径:
下一步。勾选字节想要的字段,默认是全选的:
下一步。附加选项:
- “包含列的标题”:勾选后,导出的数据第一行就是各个字段的名称了。如果不勾选,就没有这一行。
- “记录分隔符”:取决于你的操作系统,如果你用的是 Windows,那么就是默认的 CRLF。
- “文本识别符号”:如果选择了
"
,那么每一条数据左右都会用括号括起来,这可以避免某些问题。比如某条数据内容包含了半角逗号,
,而这是 CSV 文件用来分隔同一行不同列数据的,如果不在数据两侧加上双引号,可能会导致读取的时候发生串行或其他错误。你问我万一字段里面有双引号咋办?额,你问题咋这么多呢?
下一步。别忘了点击开始:
导出这些数据后,你会发现,用 Excel 打开还是乱码。
为了解决这个问题,你可以用文本编辑器(推荐 Notepad++)将其转码成 UTF8。这样 Excel 这类软件就能够正确解码文件了。
大功告成!现在你可以在本地处理这些数据了。
如果需要提取特定的数据,比如只选择播放量大于 10 万的视频,同时还要得到对应的播放数、投稿时间、up 主 mid、视频时长,那么你可以点击新建查询:
然后输入:
select d.view, s.pubdate, up.mid, s.duration from (select * from video_dynamic_180802 order by view desc limit 20000) as d, (select * from video_static) as s, (select * from up_data) as up where (d.aid=s.aid and s.mid=up.mid and d.view>=100000)
第 1 行,选择 d 的 view
列(播放数)、s 的 pubdate
列(投稿时间)、up 的 mid
列和 s 的 duration
列(视频时长)。
第 2 行,选择来自表 video_dynamic_180802
的数据,将其作为变量 d。这个表里存放的是视频的动态数据,会随时间变化,比如播放、收藏和硬币。order by view
表示按照 view
(播放数)来排序,desc
表示降序,也就是播放最多的排在最上面,limit 20000
表示只取排在前 20000 名的数据。
第 3 行,选择来自表 video_static
的数据,将其作为变量 s。这个表里存放的是视频的静态数据,一般不会随时间变化,比如投稿时间、视频标题和作者昵称。
第 4 行,选择来自表 up_data
的数据,将其作为变量 up。这个表里存放的是 up 主的信息。
第 5 行,d.view>=100000
表示选择播放数大于等于 10 万的数据。d.aid=s.aid
和 s.mid=up.mid
用于将不同的表连接起来。比如,视频静态数据中可能没有存放 up 的姓名,但是存放了 up 的 mid,这时可以通过视频静态数据中的 mid 和 up 主数据中的 mid 对应起来,同理,视频静态数据中的 aid 也需要和动态数据中的 aid 对应起来。这样就能连接多张表,从而实现按照其中某一张表的字段排序,但是得到其他表对应的字段信息。
点击运行,稍等片刻,就能得到想要的结果啦。
之后导出什么的都和前面一样。不过目前组织的服务器性能比较弱,请轻点使用哦。
更多的操作就需要你们自己挖掘咯~