When loading a lot of data a lot of the time can be spent checking constraints and building indexes.
Is it possible to disable or drop the indexes while you load data to the tables and then rebuild the indexes.
As long as the primary key is unique you should be able to add this once at the end instead of having the database check this on every row.
Likewise it is faster to build an index once all the data has been inserted instead of having to calculate this for every record.
Myslql has a csv file engine, it may be possible to convert your data to a csv file and make this appear in mysql as a table. Note that you are likely to have problems if you include some of the name columns as song names can have a coma.
You could then specify that this table is a csv file and use it as is or do an insert as select statement to copy to your real tables. ie
insert into real_table as select * from csv_external;
Personally I prefer using postgres over mysql as it has a lot of features not found in mysql.