如何将Movielens的UTF-8数据导入MySql。
我从http://grouplens.org/datasets/movielens/获取数据,对于我的推荐系统论文目的,我只想要100K和Tag Gnome数据。
我一直在谷歌和这个论坛上搜索,我没有找到任何关于将这些文件导入MySQl的内容。我自己,目前使用PhpMyAdmin来管理MySQL,所以如果有人知道如何轻松地将这些文件导入MySQL。
如果你们建议我使用php逐个迭代它,我很好,但请向我解释代码。
答案 0 :(得分:0)
您需要编写一些自定义代码才能将所有数据导入MySQL。有关Stack Overflow的Dumbest答案,对吗?
因此,他们提供了一组平面文件,每个文件都在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
简而言之:
是的,我知道我还没有真正告诉过你什么,让我们做一个,你可以希望做其他人。
我会做你的,因为我很懒,很容易。
制作一张新表,我假设您知道如何制作表等。
u.genre有两件事:一种流派和一种身份。
unknown|0
Action|1
...etc...
所以你的桌子应该有两个字段。
您将使用两种数据类型:https://dev.mysql.com/doc/refman/5.7/en/data-types.html
id - unsigned TINYINT
TINYINT unsigned是0到255
genre - VARCHAR(20)
VARCHAR 20最多20个字符,它们最长的是“纪录片”,所以如果他们添加一个新的,它会给你一些额外的空间。
打开文件获取内容: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,所以我将其留在此处。每个人的数据库设置都有所不同,因此为我的特定设置编写它对你没有帮助。