Skip to content

远程数据库使用教程

Hansimov edited this page Jan 18, 2019 · 4 revisions

本教程是写给不懂数据库的小白看的,大神们也可以提出意见,或者直接修改 Wiki 的内容。


Navicat 的安装、配置和使用

作为一个小白,命令行工具肯定比不上图形用户界面。所以我们这里主要介绍图形界面软件的安装、配置和使用。

如果你在此前已经在官网上下载了 MySQL 的社区版,那么已经自带了一个 MySQL Workbench,嗯,折腾了一小时之后你会发现它对新手很不友好,而且语言还是英文的。

这时,你可以选择 Navicat。不过 Navicat 是收费的,这可咋整?

当然是支持正版啦!(这里偷偷附上一个链接:Navicat Premium 12.0.24安装与激活Navicat Premium 12.1.11.0安装与激活,按照步骤来,亲测有效。啊,偷偷用就好啦,我可啥都没说啊。)

安装好后打开 Navicat,可以看到界面是这样的:

当然,你的界面里面肯定没有 bili-viewlocalhost_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.aids.mid=up.mid 用于将不同的表连接起来。比如,视频静态数据中可能没有存放 up 的姓名,但是存放了 up 的 mid,这时可以通过视频静态数据中的 mid 和 up 主数据中的 mid 对应起来,同理,视频静态数据中的 aid 也需要和动态数据中的 aid 对应起来。这样就能连接多张表,从而实现按照其中某一张表的字段排序,但是得到其他表对应的字段信息。

点击运行,稍等片刻,就能得到想要的结果啦。

之后导出什么的都和前面一样。不过目前组织的服务器性能比较弱,请轻点使用哦。

更多的操作就需要你们自己挖掘咯~