php - 如何将Movielens数据导入Mysql

标签 php mysql

如何将 UTF-8 数据从 Movielens 导入 MySql。

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

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

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

最佳答案

您需要编写一些自定义代码以将他们的所有数据导入 MySQL。 Stack Overflow 有史以来最愚蠢的答案,对吧?

因此他们提供了一组平面文件,每个文件都在 README 中进行了描述。

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。

 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 个字符,最长的是“Documentary”,因此如果他们添加一个新字符,将为您提供一些额外的空间。

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

$filecontents = file_get_contents("u.genre");

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

$genres = explode("\n", $filecontents);

现在我们将使用 foreach 遍历 $genres 并再次展开:https://secure.php.net/manual/en/control-structures.foreach.php

foreach ($genres as &$row) {
    list($genre,$id) = explode("|",$row);
    # more here later
}

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

if ($genre!="" && $id!=="") {
    print "INSERT INTO genre (genre,id) VALUES ($genre,$id);\n";
}

把它们放在一起......

<?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 中插入数据的资源太多了,所以我先讲到这里。每个人的数据库设置都有些不同,因此针对我的特定设置编写它对您没有帮助。

关于php - 如何将Movielens数据导入Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24603503/

相关文章:

php mysql 按 View 显示

PHP + MySQL while() while() 只从数据库中删除第一个结果

php - 在 php 中通过向上/向下箭头进行页面排序

Mysql:内存表达到max_heap_table_size怎么办?

mysql - 我想从 mysql 加入两个查询,通过选择更新?

mysql - 防止查询使用索引

php - 如果一个元素很常见,如何从php中的多行中选择数据

php - 用html形式编辑mysql表

php - Jquery Mobile MYSQL调用使用PHP

php - 在留言簿中回复多个表情