abdeen-ahmad
2/11/2016 - 2:07 PM

cut names, data cleansing , insert into , data migration

cut names, data cleansing , insert into , data migration

/* Formatted on 2016/02/10 17:06 (Formatter Plus v4.8.8) */
DECLARE
   CURSOR get_emp
   IS
      SELECT rtrim(ltrim(DECODE (SIGN (INSTR (emp_name, '.')),
                     1, SUBSTR (emp_name, INSTR (emp_name, '.', -1) + 1)
                    , emp_name))) emp_name,
             emp_no, gender, '%' || nat || '%' nat, birth, DEGREE, address,
             mobile, email, status, CERTIFICATE, job
        FROM emp_temp_table;

   v_app_no   NUMBER := 1;
BEGIN
   FOR rec IN get_emp
   LOOP
      v_app_no := v_app_no + 1;

      INSERT INTO hrs_applications
                  (application_no, job_no, first_name, father_name, mid_name,
                   last_name, nationality, gender, marital_status,
                   birth_date, address, mobile, application_status,
                   application_date, user_id, religion_code, company_id,
                   e_mail, blood_group, is_citizenship, sponsor_type,
                   degree_code, birth_country, employment_type)
         SELECT v_app_no, a.job_no,
                SUBSTR (rec.emp_name, 1, INSTR (rec.emp_name, ' ') - 1),
                SUBSTR (rec.emp_name,
                        INSTR (rec.emp_name, ' ') + 1,
                        INSTR (rec.emp_name, ' ', 1, 2) - INSTR (rec.emp_name, ' ') 
                       ),  
                SUBSTR (rec.emp_name,
                        INSTR (rec.emp_name, ' ', 1, 2) + 1,
                        decode(INSTR (rec.emp_name, ' ', 1, 3),0,99, INSTR (rec.emp_name, ' ', 1, 3)) - INSTR (rec.emp_name, ' ', 1, 2)
                       ),
                NVL(
                    SUBSTR (rec.emp_name,
                        decode(INSTR (rec.emp_name, ' ', 1, 3),0,99, INSTR (rec.emp_name, ' ', 1, 3)) + 1), '.'
                   ),
                b.country_no, DECODE (rec.gender, 'ذكر', 1, 2),
                DECODE (rec.status, 'أعزب', 1, 'متزوج', 2, 1), rec.birth,
                rec.address, rec.mobile, 1, SYSDATE, 1, 1, 1, rec.email, 9, 0,
                1, c.degree_code, b.country_no, 1
           FROM hrs_jobs a, gen_countries b, hrs_certificate_degrees c
          WHERE a.job_name = rec.job
            AND b.nationality LIKE rec.nat
            AND c.degree_desc = rec.DEGREE
            AND rownum < 2;
   END LOOP;
END;
select rec.emp_name, SUBSTR (rec.emp_name, 1, INSTR (rec.emp_name, ' ') - 1) Part1,
                SUBSTR (rec.emp_name,
                        INSTR (rec.emp_name, ' ') + 1,
                        INSTR (rec.emp_name, ' ', 1, 2) - INSTR (rec.emp_name, ' ') 
                       ) Part2,  
                SUBSTR (rec.emp_name,
                        INSTR (rec.emp_name, ' ', 1, 2) + 1,
                        decode(INSTR (rec.emp_name, ' ', 1, 3),0,99, INSTR (rec.emp_name, ' ', 1, 3)) - INSTR (rec.emp_name, ' ', 1, 2)
                       ) Part3,
                SUBSTR (rec.emp_name,
                        decode(INSTR (rec.emp_name, ' ', 1, 3),0,99, INSTR (rec.emp_name, ' ', 1, 3)) + 1) Part4
from (SELECT rtrim(ltrim(DECODE (SIGN (INSTR (emp_name, '.')),
                     1, SUBSTR (emp_name, INSTR (emp_name, '.', -1) + 1)
                    , emp_name))) emp_name
        FROM emp_temp_table) rec;