将不同的id连接到具有相同id的多个名称

时间:2016-04-01 18:00:01

标签: mysql regex excel libreoffice-calc

Heey all,

我在处理大量数据时遇到了困难。 我有一个libreoffice计算表(excel表),大约有13k记录。 2栏:艺术家 - 歌曲

我希望这些成为一个mysql数据库,所以我创建了两个表:ArtistsSongs 使用SongsArtists中的外键,因此歌曲记录需要有效artist_id。 我已经正确地插入了所有艺术家,大约是5k不同的艺术家。 这个表适用于我想用它做什么,所以没问题。

问题是我如何将艺术家的ID连接到我工作表第2栏中的歌曲。 我想要这个,所以我能够创建12k插入查询并将它们粘贴到phpmyadmin。

任何提示,正则表达式,其他解决方案?

修改

我的Excel表格:

Artists     Songs              Artist (distinct)    Artist_id
Abba        mamma mia          abba                    1
Abba        waterloo           greenday                2
Greenday    american idiot

我的输出需要是:

INSERT INTO Songs Values (1, "mamma mia");
INSERT INTO Songs Values (1, "waterloo");
INSERT INTO Songs Values (2, "american idiot");

艺术家列表(不同)和artist_id的歌曲长度不同。这就是问题

1 个答案:

答案 0 :(得分:1)

因此,您的songs表格包含字段artist_id | song。您可以使用公式来生成INSERT语句(假设您的数据在第1行开始):

="INSERT INTO songs (artist_id, song) VALUES (" & Vlookup(A1, C:D, 2, false) & ",'" & B1 & "');"

我们使用vlookup()公式来抓取artist_idartist的{​​{1}}(假设您的A1列为Artist (distinct) | Artist_Id同一张纸。

然后将其复制到第12000行并进行设置。

如果excel中的C:D中包含单引号,您可以将其排除,或者将其替换为空。

逃生:

song

卸下:

="INSERT INTO songs (artist_id, song) VALUES (" & Vlookup(A1, C:D, 2, false) & ",'" & SUBSTITUTE(B1, "'", "\'") & "');"