如何将UTF-8数据从Movielens导入到MySql中.
我从http://grouplens.org/datasets/movielens/获得数据,为了我的推荐系统论文的目的,我只想要100 K和标签Gnome数据。
我一直在谷歌搜索和这个论坛,我没有发现任何关于导入这些文件到MySQl。我自己正在使用PhpMyAdmin来管理MySQL,所以如果有人知道如何轻松地将这些文件导入MySQL。
如果你们建议我使用php一个一个地迭代它,我很好,但是请向我解释代码。
发布于 2015-12-08 22:15:44
您需要编写一些自定义代码将所有数据导入到MySQL中。堆叠溢出的最愚蠢的答案,对吧?
因此,它们提供了一组平面文件,每个文件在自述文件中都有描述。
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,因为我很懒,而且很容易。
做一个新的表格,我假设你知道如何制作表格之类的。
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个字符,他们最长的是“纪录片”,如果他们增加一个新的,这会给你一些额外的空间。
打开文件获取内容: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中,因此我将保留它。每个人的数据库设置都有点不同,因此为我的特定设置编写数据库无助于您。
https://stackoverflow.com/questions/24603503
复制相似问题