2014-07-07 3 views
1

Movielens에서 MySql으로 UTF-8 데이터 형식을 가져올 수 있습니까?Movielens 데이터를 MySQL로 가져 오는 방법

데이터를 http://grouplens.org/datasets/movielens/에서 가져오고 내 추천 시스템의 목적을 위해 단지 100K 및 태그 그놈 데이터 만 필요합니다.

Google에서이 포럼에서 검색 중이며 MySQl로 파일을 가져 오는 것에 대해 찾지 못했습니다. 나 자신, MySQL을 관리하기 위해 현재 PhpMyAdmin을 사용하고 있습니다. 그래서 누구든지 MySQL에 파일을 쉽게 임포트하는 방법을 알고 있다면.

여러분이 PHP를 사용하여 하나씩 반복하도록 권하고 싶지만 코드를 설명해주십시오.

답변

0

사용자 지정 코드를 작성하여 모든 데이터를 MySQL로 가져와야합니다. 스택 오버플로에 대한 멍청한 대답, 적?

그래서 각 파일은 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

아이디 - 부호 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 문을 $ 장르를 통해 루프를 사용하는 것입니다 다시 폭발 : https://secure.php.net/manual/en/control-structures.foreach.php

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

이제하자. 필드 중 하나가 비어 있으면 건너 뜁니다.

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에 데이터를 삽입하는 방법을 보여주는 리소스가 너무 많아서 여기에 남겨 두겠습니다. 모든 사람의 데이터베이스 설정이 약간 다르므로 내 설정에 맞게 작성하면 도움이되지 않습니다.

관련 문제