Skip to content

Commit 5728a6c

Browse files
refined queries
1 parent d62f908 commit 5728a6c

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

postgres/scripts/v1_to_v2/copy_groups_from_csv.sql

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ UPDATE v1_groups
2525
SET progress = 100
2626
WHERE required_count <= 0;
2727

28+
UPDATE v1_groups
29+
SET group_id = cast(v1_group_id as varchar);
30+
31+
UPDATE groups
32+
SET (finished_count, required_count, progress) =
33+
(SELECT finished_count, required_count, progress
34+
FROM v1_groups
35+
WHERE groups.group_id = v1_groups.group_id
36+
AND groups.project_id = v1_groups.project_id);
37+
2838
-- Insert or update data of temp table to the permant table.
2939
-- Note that the special excluded table is used to
3040
-- reference values originally proposed for insertion
@@ -48,9 +58,4 @@ SELECT
4858
project_type_specifics
4959
FROM
5060
v1_groups
51-
ON CONFLICT (project_id, group_id) DO UPDATE
52-
SET
53-
finished_count = excluded.finished_count,
54-
required_count = excluded.required_count,
55-
progress = excluded.progress
56-
;
61+
ON CONFLICT (project_id, group_id) DO NOTHING;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
-- Export v1 MapSwipe data to csv.
22
-- Rename attributes to conform to v2.
33
\copy (SELECT archive, image, importkey as "import_id", isfeatured AS "is_featured", lookfor AS "look_for", name, progress, projectdetails AS "project_details", project_id, project_type, state AS "status", info AS "project_type_specifics" FROM projects WHERE project_id in (select project_id from results group by project_id) AND project_id = 5549) TO projects.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
4-
\copy (SELECT i.import_id, i.info FROM imports i, projects p WHERE import_id in (select importkey as import_id from projects) AND p.project_id = 5549 AND p.importkey = i.import_id) TO imports.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
4+
\copy (SELECT i.import_id, i.info FROM imports i , projects p WHERE import_id in (select importkey as import_id from projects) AND p.project_id = 5549 AND p.importkey = i.import_id) TO imports.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
55
\copy (SELECT project_id, group_id, count as "number_of_tasks", completedcount as "finished_count", verificationcount as "required_count", info as "project_type_specifics" FROM groups WHERE project_id in (select project_id from results group by project_id) AND project_id = 5549 ) TO groups.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
66
\copy (SELECT project_id, group_id, task_id, info as "project_type_specifics" FROM tasks WHERE project_id in (select project_id from results group by project_id) AND project_id = 5549) TO tasks.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);

postgres/scripts/v1_to_v2/generate_copy_to_csv.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,19 @@ def get_query(project_ids):
2020
f'-- Rename attributes to conform to v2.\n' \
2121
f'\copy (SELECT archive, image, importkey as "import_id", isfeatured AS "is_featured", lookfor AS "look_for", name, progress, projectdetails AS "project_details", project_id, project_type, state AS "status", info AS "project_type_specifics" FROM projects {clause}) TO projects.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
2222
f'\copy (SELECT i.import_id, i.info FROM imports i {clause_import}) TO imports.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
23-
f'\copy (SELECT project_id, group_id, count as "number_of_tasks", completedcount as "finished_count", verificationcount as "required_count", info as "project_type_specifics" FROM groups {clause} ) TO groups.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
23+
f'\copy (SELECT project_id, group_id as "v1_group_id", count as "number_of_tasks", completedcount as "finished_count", verificationcount as "required_count", info as "project_type_specifics" FROM groups {clause} ) TO groups.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n' \
2424
f'\copy (SELECT project_id, group_id, task_id, info as "project_type_specifics" FROM tasks {clause}) TO tasks.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);\n'
2525
return query
2626

2727

2828
def get_result_query(project_ids):
29+
clause = 'WHERE project_id in (SELECT project_id FROM projects GROUP BY project_id)'
2930
if project_ids is None:
30-
clause = ''
31+
pass
3132
elif len(project_ids) == 1:
32-
clause = f'WHERE project_id = {project_ids[0]}'
33+
clause = f'{clause} AND project_id = {project_ids[0]}'
3334
else:
34-
clause = f'WHERE project_id = {project_ids[0]}'
35+
clause = f'{clause} AND project_id = {project_ids[0]}'
3536
for project_id in project_ids[1:]:
3637
clause = clause + f' OR project_id = {project_id}'
3738

0 commit comments

Comments
 (0)