首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Movielens数据导入Mysql

如何将Movielens数据导入Mysql
EN

Stack Overflow用户
提问于 2014-07-07 05:23:43
回答 1查看 1.3K关注 0票数 2

如何将UTF-8数据从Movielens导入到MySql中.

我从http://grouplens.org/datasets/movielens/获得数据,为了我的推荐系统论文的目的,我只想要100 K和标签Gnome数据。

我一直在谷歌搜索和这个论坛,我没有发现任何关于导入这些文件到MySQl。我自己正在使用PhpMyAdmin来管理MySQL,所以如果有人知道如何轻松地将这些文件导入MySQL。

如果你们建议我使用php一个一个地迭代它,我很好,但是请向我解释代码。

EN

回答 1

Stack Overflow用户

发布于 2015-12-08 22:15:44

您需要编写一些自定义代码将所有数据导入到MySQL中。堆叠溢出的最愚蠢的答案,对吧?

因此,它们提供了一组平面文件,每个文件在自述文件中都有描述。

代码语言:javascript
复制
README
allbut.pl
mku.sh
u.data
u.genre
u.info
u.item
u.occupation
u.user
u1.base
u1.test
u2.base
u2.test
u3.base
u3.test
u4.base
u4.test
u5.base
u5.test
ua.base
ua.test
ub.base
ub.test

简而言之:

  1. 在MySQL中创建自己的数据库和表。
  2. 以编程方式打开文件并将每一行解析为SQL。
  3. 将SQL导入MySQL。
  4. ???
  5. 利润!

是的,我知道我还没有真正告诉你任何事情,让我们做一个,你可以希望其他的。

我要做u.genre,因为我很懒,而且很容易。

做一个新的表格,我假设你知道如何制作表格之类的。

u.genre有两样东西:一个体裁和一个id。

代码语言:javascript
复制
 unknown|0
 Action|1
 ...etc...

所以你的桌子应该有两个字段。

您将使用两种数据类型:https://dev.mysql.com/doc/refman/5.7/en/data-types.html

id -未签名的TINYINT

TINYINT无符号为0到255

体裁- VARCHAR(20)

VARCHAR 20是多达20个字符,他们最长的是“纪录片”,如果他们增加一个新的,这会给你一些额外的空间。

打开文件获取内容:https://secure.php.net/manual/en/function.file-get-contents.php

代码语言:javascript
复制
$filecontents = file_get_contents("u.genre");

现在让我们逐行拆分这个文件:https://secure.php.net/manual/en/function.explode.php

代码语言:javascript
复制
$genres = explode("\n", $filecontents);

现在,我们将使用foreach循环遍历$genres,然后再次爆炸:https://secure.php.net/manual/en/control-structures.foreach.php

代码语言:javascript
复制
foreach ($genres as &$row) {
    list($genre,$id) = explode("|",$row);
    # more here later
}

现在,让我们只输出SQL,如果其中一个字段为空,则跳过。

代码语言:javascript
复制
if ($genre!="" && $id!=="") {
    print "INSERT INTO genre (genre,id) VALUES ($genre,$id);\n";
}

把这一切放在一起..。

代码语言:javascript
复制
<?php
$filecontents = file_get_contents("u.genre");
$genres = explode("\n", $filecontents);
foreach ($genres as &$row) {
    list($genre,$id) = explode("|",$row);
    if ($genre!="" && $id!=="") {
        $sql = "INSERT INTO genre (genre,id) VALUES ($genre,$id);\n";
        print $sql;
        # Insert each into your DB here.
    }
}
?>

保存它并从命令行运行它,或者毫无理由地将它放到浏览器中。

有太多的资源显示如何将数据插入到MySQL中,因此我将保留它。每个人的数据库设置都有点不同,因此为我的特定设置编写数据库无助于您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24603503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档