Advertisement
Guest User

Load Slater Students Script

a guest
Oct 6th, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Script for Loading Slater Patrons and adding Freshman/Grad Year Stat Cats--
  2.  
  3. BEGIN;
  4.  
  5. --DROP TABLE IF EXISTS slater_2016_load;
  6. --DROP TABLE IF EXISTS slater_2016_load_ids;
  7. --DROP TABLE IF EXISTS slater_2016_stat_cat_1;
  8. --DROP TABLE IF EXISTS slater_2016_stat_cat_2;
  9.  
  10.  
  11. -- Hints --
  12. -- perm group = 88 (STUDENT - ELEMENTARY SCHOOL), org_unit = 243 (HC-SE Slater Elementary)
  13. -- statcat1 = Gender
  14. -- statcat2 = n/a
  15.  
  16.     --Create main student staging table.
  17.     CREATE TABLE slater_2016_load2 (
  18.         s_studentid text, -- Student ID # // ident_value
  19.         s_usrname text, -- Blank for now (s+(studentID) later)
  20.         s_barcode text,
  21.         s_first_name text,
  22.         s_middle_name text,
  23.         s_last_name text,
  24.         s_dob date,
  25.         s_phone text,
  26.         s_home_ou int DEFAULT 243, -- Slater Elementary
  27.         s_profile int DEFAULT 88, -- STUDENT - ELEMENTARY SCHOOL
  28.         s_ident_type int DEFAULT 2, -- Student ID
  29.         s_net_access_level int DEFAULT 2,
  30.         s_passwd text, -- Student ID for now
  31.         --
  32.         s_street1 text,
  33.         s_street2 text,
  34.         s_city text,
  35.         s_state text,
  36.         s_country text,
  37.         s_postal_code text,
  38.         --
  39.         s_ident2 text,
  40.         s_statcat1 text
  41.     );
  42.  
  43.     --Copy records from your import text file
  44.     COPY slater_2016_load2 (
  45.         s_studentid, -- Student ID
  46.         s_usrname,
  47.         s_barcode,
  48.         s_first_name,
  49.         s_middle_name,
  50.         s_last_name,
  51.         s_dob,
  52.         s_phone,
  53.         --
  54.         s_street1,
  55.         s_street2,
  56.         s_city,
  57.         s_state,
  58.         s_country,
  59.         s_postal_code,
  60.         --
  61.         s_ident2,
  62.         s_statcat1
  63.         )
  64.         FROM '/home/bmills/slater_import.csv' WITH CSV HEADER;
  65.  
  66.     --Create the usrname entry from the student id (ident_value)
  67.     UPDATE slater_2016_load SET s_usrname='s'||s_studentid;
  68.    
  69.     -- Set password = student ID for now
  70.     UPDATE slater_2016_load SET s_passwd=s_studentid;
  71.  
  72.     --Insert records from the slater_2016_load table into the actor.usr table.
  73.     INSERT INTO actor.usr (
  74.         profile,
  75.         usrname,
  76.         passwd,
  77.         ident_type,
  78.         ident_value,
  79.         ident_value2,
  80.         first_given_name,
  81.         family_name,
  82.         home_ou,
  83.         dob,
  84.         day_phone
  85.         net_access_level)
  86.     SELECT
  87.         s_profile,
  88.         s_usrname,
  89.         s_passwd,
  90.         s_ident_type,
  91.         s_studentid,
  92.         s_ident2,
  93.         s_first_name,
  94.         s_last_name,
  95.         s_home_ou,
  96.         s_dob,
  97.         s_phone,
  98.         s_net_access_level
  99.         FROM slater_2016_load;
  100.  
  101.         -- Make our lives easier and create a table of actor.usr ids of the incoming students for later consulation
  102.         CREATE TABLE slater_2016_load_ids(
  103.             s_actor_usr_id int,
  104.             s_usrname text,
  105.             s_studentid text,
  106.             s_create_time date DEFAULT now(),
  107.             s_year_added text DEFAULT '2016'
  108.         );
  109.         -- Load it up
  110.         INSERT INTO slater_2016_load_ids(s_actor_usr_id,s_usrname,s_studentid)
  111.         SELECT au.id, sla.s_usrname, sla.s_studentid
  112.         FROM slater_2016_load sla
  113.         INNER JOIN actor.usr au
  114.         ON sla.s_usrname=au.usrname
  115.         ;    
  116.    
  117.     --Load barcodes into actor.card table
  118.     INSERT INTO actor.card (usr, barcode)
  119.         SELECT slaid.s_actor_usr_id, s.s_barcode
  120.         FROM slater_2016_load_ids slaid
  121.         INNER JOIN slater_2016_load s
  122.         ON s.s_usrname=slaid.s_usrname
  123.         ;
  124.        
  125.     --Update actor.usr.card field with actor.card.id to associate active card with the user:
  126.     --Play it safe and only update when User ID is in the Slater ID table
  127.     UPDATE actor.usr au
  128.         SET card = ac.id
  129.         FROM actor.card ac
  130.         WHERE ac.usr = au.id AND au.id IN (SELECT s_actor_usr_id FROM slater_2016_load_ids);
  131.  
  132.     --Update actor.usr_address from staging table.
  133.     INSERT INTO actor.usr_address (usr, street1, street2, city, state, country, post_code)
  134.         SELECT au.id,
  135.         sla2.s_street1,
  136.         sla2.s_street2,
  137.         sla2.s_city,
  138.         sla2.s_state,
  139.         sla2.s_country,
  140.         sla2.s_postal_code
  141.         FROM slater_2016_load sla2
  142.         INNER JOIN actor.usr au ON au.usrname=sla2.s_usrname;
  143.  
  144.  
  145.    --Update actor.usr mailing address with id from actor.usr_address table:
  146.     UPDATE actor.usr au
  147.         SET mailing_address = aua.id, billing_address = aua.id
  148.         FROM actor.usr_address aua
  149.         WHERE au.id = aua.usr
  150.             AND au.id IN (SELECT s_actor_usr_id FROM slater_2016_load_ids);
  151.        
  152.     --Insert Stat Cats (Freshman, 2020 Grad Date) -- "Freshman,43 | 2020,69"
  153.     --80 (Grad Year), 81 (Class) on test server
  154.    
  155.     -- Create Scratch Tables for load
  156.     -- Since I know of no nice way to do multiple inserts with one value dynamically changing
  157.    
  158.     -- Gender --
  159.     CREATE TABLE slater_2016_stat_cat_1 (
  160.         stat_cat_entry text,
  161.         stat_cat int DEFAULT 25,
  162.         target_usr int
  163.     );
  164.     INSERT INTO slater_2016_stat_cat_1 (target_usr, stat_cat_entry)
  165.         SELECT slaid.s_actor_usr_id, s.s_statcat1
  166.         FROM slater_2016_load_ids slaid
  167.         INNER JOIN slater_2016_load s ON s.s_usrname=slaid.s_usrname;
  168.    
  169.     INSERT INTO actor.stat_cat_entry_usr_map (stat_cat_entry,stat_cat,target_usr)
  170.     SELECT stat_cat_entry,stat_cat,target_usr FROM slater_2016_stat_cat_1;
  171.    
  172.     --Grad Year--
  173.     #CREATE TABLE hrvhs_stat_cat_2 (
  174.     #   stat_cat_entry text DEFAULT '2020',
  175.     #   stat_cat int DEFAULT 69,
  176.     #   target_usr int
  177.     #);
  178.     #INSERT INTO hrvhs_stat_cat_2 (target_usr)
  179.     #SELECT h_actor_usr_id FROM hrvhs_freshman_load_ids;
  180.    
  181.     #INSERT INTO actor.stat_cat_entry_usr_map (stat_cat_entry,stat_cat,target_usr)
  182.     #SELECT stat_cat_entry,stat_cat,target_usr FROM hrvhs_stat_cat_2;
  183.    
  184.     -- DONE! --
  185.  
  186.     COMMIT;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement