IMDB数据导入MySQL数据库

7 投票
4 回答
21493 浏览
提问于 2025-04-17 00:42

我想找个办法把所有的IMDB数据导入到我自己的MySQL数据库里。我已经从IMDB的官网上下载了所有的数据文件,这些文件都是*.list格式的(在Windows系统上)。

我想把这些信息提取出来,并正确地插入到我的MySQL数据库中,这样我就可以进行一些测试和查询了。

我跟着一个指南操作,但大概一半的时候我才意识到那是2004年的指南,现在的操作方式和七年前的工具不太兼容。

我在网上找了很多应用程序、PHP脚本、Python脚本等等,想找到解决办法,但都没有成功。IMDB自己提到的W32工具也不管用。

有没有人知道解决这个问题的方法或者途径呢?

4 个回答

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”的数据库,并给“user”这个用户赋予所有权限,密码设置为“password”。

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:password@localhost/imdb' --mysql-force-myisam

这段内容借鉴自 "从纯文本文件导入IMDB数据集到MySQL数据库",并做了一些小的修改。

2

对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的接口与MySQL-python兼容。)

IMDb数据文件格式的变化

IMDb数据文件格式的更改是在2017年12月引入的,而当前版本的IMDbPY 6.2尚不支持新文件格式。(请参见这个GitHub问题。)

在这个问题解决之前,请使用以旧格式发布的最新IMDb数据,下载地址是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:password@localhost/imdb'
    

编辑:IMDbPY 6.2不创建外键。如果需要创建外键,请查看这个GitHub问题。如果需要创建外键,你将需要使用旧版本的IMDbPY,但旧版本在生成外键时也有报告的问题(见链接的GitHub问题)。

更新:导入数据花了4.5小时,我在使用InnoDB表时没有遇到问题。

编辑:如果希望使用IMDbPY 6.2并需要外键,则在生成数据库后需要手动添加外键。在添加外键之前,需要对数据进行少量清理。有关清理和需要添加的外键的详细信息,请参见这个GitHub问题。

6

有一个很不错的 Python 脚本,可以在这里找到,它帮了我很多忙。只需要连接一下,然后运行它。大约花了我一个小时来搞定所有的事情。

补充说明:可以参考这个说明文件来制作脚本。

撰写回答