数据sql脚本下面提供了两种下载方式,如果你使用的mysql客户端可视化连接工具是:MySql WorkBench
可以使用如下的方式导入sql脚本数据
(1)脚本数据部分截图效果
(2)CSDN积分下载链接地址:https://download.csdn.net/download/appleyk/10417081
(3)百度网盘下载链接地址:https://pan.baidu.com/s/1f0ytkiN7jkwcpbbOzId71Q
由于要基于知识图谱进行问答系统的搭建,因此,我们需要把mysql中的数据转移到neo4j图形数据库中,为什么不直接用mysql构建我们的关系呢?
(1)首先我们简单说一下什么是Neo4j?
Neo4j是一个NoSQL的图数据库管理系统,它存储的结构和redis、mongodb一样,都是key-value的形式,因此查询性能是非常棒的,同样是查询电影和电影类别之间的关系,mysql需要用到select连接查询,而neo4j只需要一条cypher语句既能搞定,
(2)什么是cypher呢?
Neo4j使用Cypher查询图形数据,Cypher是描述性的图形查询语言,语法简单,功能强大,由于Neo4j在图形数据库家族中处于绝对的领先地位,拥有众多的用户基数,使得Cypher成为图形查询语言事实上的标准。
(3)为什么不使用MySql数据库呢?
上面第一点已经说过了,不是mysql干不了neo4j的工作,而是neo4j在处理节点(对象)关系这方面性能比较棒,而且查询语句简单,更容易构建我们的电影知识图谱,我们也可以将二者结合起来用,比如,mysql存储对象的详细信息,而对象之间的关系,我们可以存储到neo4j中,二者配合起来使用也是很不错的,而本系列文章中,博主采用neo4j来构建项目,mysql除了一开始提供数据以外,真的是被我完全给晾到一边了,
好了,我们来看一下,电影类别和电影之间的关系在neo4j图形数据中的效果展示吧
(4)mysql数据导出csv
由于mysql导出数据的默认目录是:安装路径\Uploads\,因此,我们导出csv的时候,一定要在这个目录下指定导出文件名,否则会提示权限不足,如果你有强迫症,可以自行修改mysql的配置文件改这个路径
导出sql脚本语句如下:
use movie;
#CMD命令 查看MySql的导入与导出的目录【其他目录无权限】
# 使用mysql -u root -p 连接mysql
# show variables like '%secure%'
#+--------------------------+------------------------------------------------+
#| Variable_name | Value |
#+--------------------------+------------------------------------------------+
#| require_secure_transport | OFF |
#| secure_auth | ON |
#| secure_file_priv | C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\ |genregenre
#+--------------------------+------------------------------------------------+
#3 rows in set, 1 warning (0.00 sec)
#MySql导出csv数据,带表头
#导出电影的类型
SELECT * INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/genre.csv'
FIELDS TERMINATED BY ','
FROM (select 'gid','gname' union select*from genre) genre_;
#导出电影的信息 == 如果太多可以只导出前500个,加限制
SELECT * INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/movie.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r' #电影描述中出现\r换行字符,
FROM (select 'mid','title','introduction','rating','releasedate' union select*from movie) movie_;
#导出演员person的信息 == 如果有中文名要中文名,如果没有取英文名
SELECT * INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/person.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM (select 'pid','birth','death','name','biography','birthplace' union
select person_id,person_birth_day,person_death_day,case when person_name is null then person_english_name else person_name end
as name,person_biography,person_birth_place from person) person_;
#导出电影ID和电影类别之间的对应 【1对1】
SELECT * INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/movie_to_genre.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM (select 'mid','gid' union select*from movie_to_genre) movie_to_genre_;
#导出演员ID和电影ID之间的对应 【1对多】
SELECT * INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/person_to_movie.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM (select 'pid','mid' union select*from person_to_movie) person_to_movie_;
#解决导出csv中文乱码问题:将csv用txt打开,另存为,选择utf8编码保存覆盖即可
执行sql脚本语句后,效果如下
(5)导出的csv文件中文乱码
如果出现csv文件中中文乱码的情况,不要慌,我们可以采用下面的方法进行补救
1、选择问题csv文件,右键打开方式选 "记事本"
2、记事本打开后,选择菜单"文件"下拉框中的另存为
3、打开另存为对话框后,最下面的文件编码格式选择"UTF-8"
4、文件名不用动,然后选择保存,覆盖源文件即可解决中文乱码问题