IMDB to MySQL:将 IMDB 数据插入 MySQL 数据库
Posted
技术标签:
【中文标题】IMDB to MySQL:将 IMDB 数据插入 MySQL 数据库【英文标题】:IMDB to MySQL: Insert IMDB data into MySQL database 【发布时间】:2011-11-06 20:15:37 【问题描述】:我正在寻找将所有 IMDB 数据导入我自己的 mysql 数据库的解决方案。我已经从他们的主页下载了所有的 IMDB 数据文件,这些文件都是 *.list 文件格式(在 Windows 中)。
我想检索这些信息并将其正确插入到我的 MySQL 数据库中,以便进行一些测试和查询搜索。
我遵循了一个指南,但大约一半的人意识到它是 2004 年的指南,而现在的工作方式与七年前的工具并不一致。
我在网上浏览了应用程序、php-scripts、python-script 以及没有找到解决方案但没有运气的东西。 IMDB 自己引用的 W32 工具也不起作用。
有没有人知道解决方案或方法来完成这项任务?
【问题讨论】:
【参考方案1】:有一些nice py script,女巫帮了我。只需建立连接并运行它。约 1 小时来解决所有问题。
编辑:使用this readme file 制作脚本。
【讨论】:
非常感谢。这正是我想要的。花了大约 4 个小时,但现在我用 IMDB 得到了一个不错的 3GB 数据库:-)【参考方案2】:在 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
从“Import IMDb Data Set from Plain Text Files To MySQL Database”借用一些小修正。
【讨论】:
【参考方案3】:对 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
的API兼容MySQL-python
。)
对 IMDb 数据文件格式的更改
2017 年 12 月引入了对 IMDb 数据文件格式的更改,而 IMDbPY 6.2(当前版本)尚不适用于新的文件格式。 (请参阅this GitHub 问题。)
在解决此问题之前,请使用以旧格式发布的最新版 IMDd 数据,该格式可在 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 版不创建外键。请参阅this GitHub 问题。如果您需要创建外键,则需要使用旧版本的 IMDbPY,但也报告了旧版本中外键生成的问题(请参阅链接的 GitHub 问题)。
更新:导入花了 4.5 小时,我使用 InnoDB 表没有问题。
编辑:如果希望使用 6.2 版的 IMDbPY 并需要外键,则需要在生成后手动将它们添加到数据库中。在添加外键之前,需要对数据进行非常少量的清理。此清理和需要添加的外键在this GitHub 问题中进行了描述。
【讨论】:
【参考方案4】:已对 imdb 客户端进行了更新,并添加了一些文档,使得其中一些已过时。最新请参考updated docs。
【讨论】:
以上是关于IMDB to MySQL:将 IMDB 数据插入 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章