我对SQL非常陌生。我有一些网站管理员发送给我的书籍的CSV文件,我正在尝试将它们整理到数据库表中。
我的输入(CSV文件)看起来像这样=
Book Title | Volume | price | Genre |
Book | 1 | 10.99 | Science Fiction, Fantasy, Midevial, Magic|
有些标题多达10种类型。我的关键问题是,如何获取信息在“风格”列下,然后将其拆分为不同的列,以便每一列只有一种类型?
谢谢!
答案 0 :(得分:0)
你不知道。您要做的是创建一个BookGenres
表,其中包含book_id
和genre
的列。
您可以将现有的CSV数据加载到登台表中,其中包含genres
的列。
然后您可以执行以下操作:
insert into bookgenres (book_id, genre)
select book, substring_index(genres, ', ', 1)
from staging;
insert into bookgenres (book_id, genre)
select book, substring_index(substring_index(genres, ', ', 2), ', ', -1)
from staging
where genres like '%, %';
insert into bookgenres (book_id, genre)
select book, substring_index(substring_index(genres, ', ', 3), ', ', -1)
from staging
where genres like '%, %, %'
. . .
insert into bookgenres (book_id, genre)
select book, substring_index(substring_index(genres, ', ', 10), ', ', -1)
from staging
where genres like '%, %, %, %, %, %, %, %, %, %';
有一些技巧可以简化此操作,但是对于一次性数据加载,只需编写所需的SQL就足够简单了。