2011-08-30 163 views
6

我正在寻找一种解决方案,将所有IMDB数据导入到我自己的MySQL数据库中。我已经从他们的主页下载了所有的IMDB数据文件,它们都是文件格式* .list(在Windows中)。IMDB到MySQL:插入IMDB数据到MySQL数据库

我想检索和信息,并将其正确插入到我的MySQL数据库,所以我可以做一些测试和查询搜索。

我遵循了一个指南,但大约一半我意识到这是一个2004年的指南,现在的工作方式现在不适用于七年前的工具。

我已经浏览了应用程序,php脚本,python脚本和什么不找到解决方案,但没有运气的网。 IMDB自己引用的W32工具也不起作用。

有没有人知道一个解决方案或方法来完成这项任务?

回答

6

还有一些nice py script,女巫帮了我。只需建立连接并运行它。约1小时解决一切。

编辑:使用this readme file制作脚本。

+1

谢谢一堆。那正是我想要的。花了大约4个小时,但现在我用IMDB获得了一个不错的3GB数据库:-) – Mestika

1

在Ubuntu上

1)安装所有必需的软件包。

sudo apt-get install -y gcc python python-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev python-setuptools python-pip 
easy_install -U SQLObject 
pip install MySQL-python 

2)安装IMDBPY。

cd [IMDBPY_parent_directory] 
wget http://prdownloads.sourceforge.net/imdbpy/IMDbPY-5.1.tar.gz 
tar -xzf IMDbPY-5.1.tar.gz 
cd IMDbPY-5.1 
python setup.py install 

3)在MySQL中,创建一个数据库 “IMDB”,并授予所有的权限为 “用户”,密码为 “密码”。

CREATE DATABASE imdb; 
GRANT ALL PRIVILEGES ON imdb.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 
FLUSH PRIVILEGES; 

4)下载所有IMDB数据。

mkdir [imdb_data_directory] 
cd [imdb_data_directory] 
wget -r --accept="*.gz" --no-directories --no-host-directories --level 1 ftp://ftp.fu-berlin.de/pub/misc/movies/database/ 

5)将IMDB数据加载到mysql(使用myisam作为存储引擎)。

cd [IMDBPY_parent_directory]/IMDbPY-5.1/bin 
python imdbpy2sql.py -d [imdb_data_directory] -u 
'mysql://user:[email protected]/imdb' --mysql-force-myisam 

从 “Import IMDb Data Set from Plain Text Files To MySQL Database” 借用一些小的修正。

0

对IMDbPY和IMDb数据文件格式的更改意味着现有答案不再有效(截至2018年1月)。

我使用的是Ubuntu 17.10和MariaDB 10.1(不是MySQL,但以下内容也适用于MySQL)。

更改IMDbPY

IMDbPY的最新版本是6.2,它在Python 3中实现,并在gccSQLObject的依赖已被删除。此外,Python包MySQL-python不适用于Python 3,因此我们安装mysqlclient;见下文。 (mysqlclient的API与MySQL-python兼容。)

更改到IMDB数据文件格式

更改IMDB的数据文件在2017年12月推出的格式,并IMDbPY 6.2(当前版本)还没有与新的合作文件格式。 (请参阅this GitHub问题。)

在解决此问题之前,请使用以旧格式发布的最新版IMDd数据,该格式可在ftp://ftp.fu-berlin.de/pub/misc/movies/database/frozendata/处获取。下载所有*.list.gz文件(不包括子目录中的文件)。

新步伐跟随

  1. 安装Python 3和所需的软件包:

    sudo apt install python3 
    pip3 install mysqlclient 
    
  2. 在MariaDB的,创建一个数据库imdb,并授予所有的权限user 与密码password

    CREATE DATABASE imdb; 
    GRANT ALL PRIVILEGES ON imdb.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 
    FLUSH PRIVILEGES; 
    
  3. 获取IMDbPY 6.2:

    wget https://github.com/alberanid/imdbpy/archive/6.2.zip 
    unzip 6.2.zip 
    cd imdbpy-6.2 
    python3 setup.py install 
    
  4. 加载IMDB数据到MariaDB的:

    cd bin 
    python3 imdbpy2sql.py -d [imdb_dataset_directory] -u 'mysql://user:[email protected]/imdb' 
    

编辑:版本IMDbPY的6.2不创建外键。请参阅this GitHub问题。如果需要创建外键,则需要使用旧版本的IMDbPY,但也有旧版本中生成外键的报告问题(请参阅链接的GitHub问题)。

更新:导入需要4.5小时,使用InnoDB表格我没有问题。

编辑:如果希望使用IMDbPY版本6.2并需要外键,那么在生成后需要将它们手动添加到数据库中。在添加外键之前,需要对数据进行非常少量的清理。这个清理和需要添加的外键在this GitHub问题中描述。