用户工具

站点工具


mnbvc:mysqlexportdata

这是本文档旧的修订版!


为了方便各个中文论坛站长支持『MNBVC中文语料集』项目,这里使用最普遍的Discuz!论坛为例,简单介绍一下站长如何从论坛数据库中导出脱敏的论坛帖子数据。

首先,我们以最普遍使用的论坛数据库MySQL,和使用最广泛的数据库图形化管理工具 PhpMyAdmin 为例。

如果你管理论坛数据库的界面是上面这样的,则说明你的论坛正在使用MySQL数据库,且你正在使用PhpMyAdmin 管理你的数据库。

我们都知道,我们希望收集整理的论坛信息,就是论坛的帖子。一般来说,论坛的帖子里对于语料集来说有意义的数据包括:

帖子标题,帖子内容,回帖内容,每一个帖子和回帖的发言ID,以及发帖子的时间(不是必要的)。其它的信息我们并不需要,也不想要任何可能泄露论坛用户隐私的信息。

因此,我么只需要把论坛数据库中的这些必要数据,复制到一个新的数据表中,再导出这个数据表,就可以了。

我们先以Discuz!论坛的数据库为例:

我们看到论坛的数据库里面有很多很多的数据表,这是因为现在的论坛都有很多很复杂的功能,因此这里面只有两个关键的数据表里面的数据,才是我们需要的帖子内容。

如上图所示,一个Discuz!论坛的页面里,我们只需要帖子标题,帖子内容,以及对应的发帖人ID,这个帖子对于大模型训练用的语料来说,就基本完整了。另外我们还需要每一个帖子内容(就是回帖)的发帖时间来对回帖内容进行排序。

因此,我们需要的数据表就是:

pre_forum_thread 主题信息,主题帖标题、内容、作者、发表时间等
pre_forum_post 帖子信息,包括帖子标题、内容、作者、发表时间等

这两个是必须的

其中, pre_forum_thread数据表中,我们仅需要tid,author,subject 三列的数据:

pre_forum_post数据表中,我们需要tid,first,author,subject,dataline,message

因此,我们点击PhoMyAdmin 的数据表上方的『SQL』菜单,

写入如下数据库代码:

以下是MySQL代码,用于满足你的需求:

-- 创建thread_bak数据表并复制数据
CREATE TABLE thread_bak (
  tid INT,
  author VARCHAR(255),
  subject VARCHAR(255)
);
 
INSERT INTO thread_bak (tid, author, subject)
SELECT tid, author, subject
FROM pre_forum_thread;
 
-- 创建post_bak数据表并复制数据
CREATE TABLE post_bak (
  tid INT,
  FIRST TINYINT,
  author VARCHAR(255),
  subject VARCHAR(255),
  dataline DATETIME,
  message TEXT
);
 
INSERT INTO post_bak (tid, FIRST, author, subject, dataline, message)
SELECT tid, FIRST, author, subject, dataline, message
FROM pre_forum_post;

请注意,上述代码中的数据表名和列名(如pre_forum_thread、pre_forum_post)需要根据你的实际数据库结构进行替换。同样,数据类型和列长度也可以根据需要进行调整。

执行以上代码后,将在数据库中创建一个名为thread_bak的新数据表,并将pre_forum_thread表中tid、author、subject这三列的数据复制到thread_bak表中。同时,也会创建一个名为post_bak的新数据表,并将pre_forum_post表中tid、first、author、subject、dataline和message这五列的数据复制到post_bak表中。

确保数据库连接和选择的数据库正确,并根据实际需求调整数据表名、列名、数据类型和列长度。

好,到目前为止,我们就能够看到左侧的数据表列表底部多了两个新的备份数据表 thread_bak,post_bak

选中这两个新数据表(分别选中),点击数据表顶部的“导出”菜单:

然后点击右下角的“执行”按钮,静待数据表导出,保存到本机即可。

重复以上步骤,把两个备份的数据表全部导出,就可以把这两个文件打包。然后上传到网盘或者服务器,提交给MNBVC下载使用了。

mnbvc/mysqlexportdata.1693933791.txt.gz · 最后更改: 2023/09/06 01:09 由 Linglingfa