-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsql_queries.py
135 lines (116 loc) · 2.9 KB
/
sql_queries.py
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# DROP TABLES
songplay_table_drop =\
"""DROP
TABLE IF EXISTS songplays;"""
user_table_drop =\
"""DROP
TABLE IF EXISTS users;"""
song_table_drop =\
"""DROP
TABLE IF EXISTS songs;"""
artist_table_drop =\
"""DROP
TABLE IF EXISTS artists;"""
time_table_drop =\
"""DROP
TABLE IF EXISTS time;"""
# CREATE TABLES
#songplay_id, start_time, user_id, level, song_id, artist_id, session_id, location, user_agent
songplay_table_create =\
"""CREATE TABLE IF NOT EXISTS songplays (
songplay_id SERIAL PRIMARY KEY,
user_id VARCHAR (11),
song_id VARCHAR(22),
artist_id VARCHAR(22),
session_id INT,
location VARCHAR(128),
user_agent VARCHAR(192),
level VARCHAR(4),
start_time TIMESTAMP
);"""
#user_id, first_name, last_name, gender, level
user_table_create =\
"""CREATE TABLE IF NOT EXISTS users(
user_id VARCHAR (11),
last_name VARCHAR(64),
gender VARCHAR(1),
first_name VARCHAR(64),
level VARCHAR(4),
PRIMARY KEY(user_id)
);"""
#song_id, title, artist_id, year, duration
song_table_create = """CREATE TABLE IF NOT EXISTS songs(
song_id VARCHAR(22),
song_title VARCHAR(128),
duration DOUBLE PRECISION,
year INT,
artist_id VARCHAR(22),
PRIMARY KEY(song_id)
);"""
#artist_id, name, location, latitude, longitude
artist_table_create = \
"""CREATE TABLE IF NOT EXISTS artists(
artist_id VARCHAR(22),
name VARCHAR(128),
latitude DOUBLE PRECISION,
longitude DOUBLE PRECISION,
location VARCHAR(128),
PRIMARY KEY(artist_id)
);"""
#start_time, hour, day, week, month, year, weekday
time_table_create = """CREATE TABLE IF NOT EXISTS time(
session_id INT,
item_in_session INT,
start_time TIMESTAMP,
hour INT,
day INT,
week INT,
month INT,
year INT,
weekday INT,
PRIMARY KEY(item_in_session, session_id)
);"""
# INSERT RECORDS
songplay_table_insert = \
"""INSERT INTO songplays
VALUES
(
DEFAULT, %s, %s, %s, %s, %s, %s, %s, %s
);
"""
user_table_insert = \
"""INSERT INTO users (user_id, last_name, gender, first_name, level)
VALUES (%s, %s, %s, %s, %s)
ON CONFLICT (user_id)
DO UPDATE SET level = EXCLUDED.level"""
#user_table_insert = \
#"""INSERT INTO users
#VALUES
# (%s, %s, %s, %s, %s) ON CONFLICT DO NOTHING;"""
song_table_insert = \
"""INSERT INTO songs
VALUES
(%s, %s, %s, %s, %s);"""
artist_table_insert = \
"""INSERT INTO artists
VALUES
(%s, %s, %s, %s, %s) ON CONFLICT DO NOTHING;"""
time_table_insert = \
"""INSERT INTO time
VALUES
(%s, %s, %s, %s, %s, %s, %s, %s, %s);"""
# FIND SONGS
song_select = \
"""SELECT
song_id,
artist_id
FROM
songs
WHERE
song_title = %s
AND duration = %s;"""
# QUERY LISTS
create_table_queries = [songplay_table_create, user_table_create\
, song_table_create, artist_table_create, time_table_create]
drop_table_queries = [songplay_table_drop, user_table_drop,\
song_table_drop, artist_table_drop, time_table_drop]