IMDB数据导入MySQL数据库
我想找个办法把所有的IMDB数据导入到我自己的MySQL数据库里。我已经从IMDB的官网上下载了所有的数据文件,这些文件都是*.list格式的(在Windows系统上)。
我想把这些信息提取出来,并正确地插入到我的MySQL数据库中,这样我就可以进行一些测试和查询了。
我跟着一个指南操作,但大概一半的时候我才意识到那是2004年的指南,现在的操作方式和七年前的工具不太兼容。
我在网上找了很多应用程序、PHP脚本、Python脚本等等,想找到解决办法,但都没有成功。IMDB自己提到的W32工具也不管用。
有没有人知道解决这个问题的方法或者途径呢?
4 个回答
在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数据库",并做了一些小的修改。
对IMDbPY和IMDb数据文件格式的更改意味着,现有的解决方案在2018年1月后不再适用。
我使用的是Ubuntu 17.10和MariaDB 10.1(不是MySQL,不过下面的内容也适用于MySQL)。
IMDbPY的变化
最新版本的IMDbPY是6.2,它是用Python 3写的,并且不再依赖于gcc
和SQLObject
。此外,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
文件(不包括子目录中的文件)。
新的操作步骤
安装Python 3和所需的包:
sudo apt install python3 pip3 install mysqlclient
在MariaDB中创建一个名为
imdb
的数据库,并授予用户user
(密码是password
)所有权限。CREATE DATABASE imdb; GRANT ALL PRIVILEGES ON imdb.* TO 'user'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
获取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
将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问题。