MySQL 处理 csv 文件中数据的多对多关系
MySQL handling many to many relations from data in csv file
我有一个包含以下列的 CSV 文件:
演员姓名,
地址,
城市,
电影
ActorName 列有重复条目,因为该演员曾出演多部电影。
例如。演员克林特伊斯特伍德被列为 3 次,因为电影栏目有 3 部他演过的电影。
我遇到的问题是如何创建联结 table 或关系。如果我先创建 ActorID,那么 ActorName 仍然会有重复项。如果我先创建 Movies table 并移动 Movies 列,然后从 Actor table 中删除重复项,那么我将如何将 movie 与 actor 相关联?
一个例子。将数据加载到临时 table 然后复制到工作 tables.
CREATE PROCEDURE process_data ()
BEGIN
-- load data from CSV file into temptable
LOAD DATA INFILE 'x:/folder/new_data.csv' INTO TABLE raw_data;
-- insert actor names into actor table if absent
INSERT IGNORE INTO actor (actor_name) SELECT actor_name FROM raw_data;
-- insert movie names into movie table if absent
INSERT IGNORE INTO movie (movie_name) SELECT movie_name FROM raw_data;
-- insert junction data into actor_in_movie if absent
INSERT IGNORE INTO actor_in_movie (actor_id, movie_id)
SELECT actor_id, movie_id
FROM raw_data
JOIN actor USING (actor_name)
JOIN movie USING (movie_name);
-- clear imported data
TRUNCATE raw_data;
END
我有一个包含以下列的 CSV 文件:
演员姓名, 地址, 城市, 电影
ActorName 列有重复条目,因为该演员曾出演多部电影。 例如。演员克林特伊斯特伍德被列为 3 次,因为电影栏目有 3 部他演过的电影。
我遇到的问题是如何创建联结 table 或关系。如果我先创建 ActorID,那么 ActorName 仍然会有重复项。如果我先创建 Movies table 并移动 Movies 列,然后从 Actor table 中删除重复项,那么我将如何将 movie 与 actor 相关联?
一个例子。将数据加载到临时 table 然后复制到工作 tables.
CREATE PROCEDURE process_data ()
BEGIN
-- load data from CSV file into temptable
LOAD DATA INFILE 'x:/folder/new_data.csv' INTO TABLE raw_data;
-- insert actor names into actor table if absent
INSERT IGNORE INTO actor (actor_name) SELECT actor_name FROM raw_data;
-- insert movie names into movie table if absent
INSERT IGNORE INTO movie (movie_name) SELECT movie_name FROM raw_data;
-- insert junction data into actor_in_movie if absent
INSERT IGNORE INTO actor_in_movie (actor_id, movie_id)
SELECT actor_id, movie_id
FROM raw_data
JOIN actor USING (actor_name)
JOIN movie USING (movie_name);
-- clear imported data
TRUNCATE raw_data;
END