Repository navigation
Expand file tree
/
Copy pathSong.sql
More file actions
69 lines (65 loc) · 2.28 KB
/
Copy pathSong.sql
File metadata and controls
69 lines (65 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
CREATE TABLE Song (
song_id varchar(50),
song_name varchar(200),
energy decimal(5,4),
song_timing varchar(50) AS (
CASE
WHEN energy BETWEEN 0.0 AND 0.2 THEN 'calm'
WHEN energy BETWEEN 0.2 AND 0.4 THEN 'mellow'
WHEN energy BETWEEN 0.4 AND 0.6 THEN 'neutral'
WHEN energy BETWEEN 0.6 AND 0.8 THEN 'energetic'
WHEN energy BETWEEN 0.8 AND 1.0 THEN 'high energy'
END
) STORED,
song_genre varchar(50),
PRIMARY KEY (song_name)
);
CREATE TABLE SongStaging (
song_id varchar(50),
song_name varchar(200),
energy decimal(5,4),
song_timing varchar(50) AS (
CASE
WHEN energy BETWEEN 0.0 AND 0.2 THEN 'calm'
WHEN energy BETWEEN 0.2 AND 0.4 THEN 'mellow'
WHEN energy BETWEEN 0.4 AND 0.6 THEN 'neutral'
WHEN energy BETWEEN 0.6 AND 0.8 THEN 'energetic'
WHEN energy BETWEEN 0.8 AND 1.0 THEN 'high energy'
END
) STORED,
song_genre varchar(50)
);
LOAD DATA INFILE '/var/lib/mysql-files/Song.csv'
IGNORE INTO TABLE SongStaging
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(@dummy, @track_id, @dummy, @dummy, @track_name, @dummy, @dummy, @dummy, @dummy, @energy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @track_genre)
SET song_id = @track_id,
song_name = @track_name,
energy = @energy,
song_genre = @track_genre;
INSERT INTO Song (song_id, song_name, energy, song_timing, song_genre)
SELECT song_id, song_name, energy, song_timing, song_genre
FROM SongStaging
ON DUPLICATE KEY UPDATE
song_id = VALUES(song_id),
energy = VALUES(energy),
song_timing = VALUES(song_timing)
song_genre = VALUES(song_genre);
INSERT INTO Song (song_id, song_name, energy, song_genre)
SELECT song_id, song_name, energy, song_genre
FROM SongStaging
ON DUPLICATE KEY UPDATE
song_id = SongStaging.song_id,
energy = SongStaging.energy,
song_genre = SongStaging.song_genre;
(SELECT 'song_id', 'song_name', 'energy', 'song_timing', 'song_genre')
UNION ALL
(SELECT song_id, song_name, CAST(energy AS CHAR), song_timing, song_genre
FROM Song)
INTO OUTFILE '/var/lib/mysql-files/Song_output.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';