X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=sql%2Fbase%2Fbase.sql;h=8f16f68bb293f880153b1b4a4f1976586e52b159;hp=669a23e4744bc67aafca019fe800375c6b567503;hb=1217cb23897421754631dc033f0c0d324e40ddf2;hpb=0a50e72c7444b635cf5ad2ff5e7fb111925d58dc diff --git a/sql/base/base.sql b/sql/base/base.sql index 669a23e..8f16f68 100644 --- a/sql/base/base.sql +++ b/sql/base/base.sql @@ -23,7 +23,7 @@ -- SELECT migration_tools.build('foo'); -- SELECT * FROM foo.fields_requiring_mapping; -- \d foo.actor_usr --- create some incoming ILS specific staging tables, like CREATE foo.legacy_items ( l_barcode TEXT, .. ) INHERITS foo.asset_copy; +-- create some incoming ILS specific staging tables, like CREATE foo.legacy_items ( l_barcode TEXT, .. ) INHERITS (foo.asset_copy); -- Do some mapping, like UPDATE foo.legacy_items SET barcode = TRIM(BOTH ' ' FROM l_barcode); -- Then, to move into production, do: select migration_tools.insert_base_into_production('foo') @@ -244,7 +244,7 @@ CREATE OR REPLACE FUNCTION migration_tools.build_specific_base_staging_table (TE BEGIN base_staging_table = REPLACE( production_table, '.', '_' ); --RAISE INFO 'In migration_tools.build_specific_base_staging_table(%,%) -> %', migration_schema, production_table, base_staging_table; - PERFORM migration_tools.exec( $1, 'CREATE TABLE ' || migration_schema || '.' || base_staging_table || ' ( LIKE ' || production_table || ' INCLUDING DEFAULTS EXCLUDING CONSTRAINTS );' ); + PERFORM migration_tools.exec( $1, 'CREATE UNLOGGED TABLE ' || migration_schema || '.' || base_staging_table || ' ( LIKE ' || production_table || ' INCLUDING DEFAULTS EXCLUDING CONSTRAINTS );' ); PERFORM migration_tools.exec( $1, ' INSERT INTO ' || migration_schema || '.fields_requiring_mapping SELECT table_schema, table_name, column_name, data_type @@ -380,38 +380,42 @@ CREATE OR REPLACE FUNCTION migration_tools.name_parse_out_last_first_middle_and_ prefix := 'Dr.'; temp := REGEXP_REPLACE( temp, E'DR\.\\s*', '', 'i' ); END IF; - IF temp ilike '%JR%' THEN + IF temp ilike '%JR.%' THEN suffix := 'Jr.'; - temp := REGEXP_REPLACE( temp, E'JR\.?\\s*', '', 'i' ); + temp := REGEXP_REPLACE( temp, E'JR\.\\s*', '', 'i' ); END IF; IF temp ilike '%JR,%' THEN suffix := 'Jr.'; temp := REGEXP_REPLACE( temp, E'JR,\\s*', ',', 'i' ); END IF; - IF temp ilike '%SR%' THEN + IF temp ilike '%SR.%' THEN suffix := 'Sr.'; - temp := REGEXP_REPLACE( temp, E'SR\.?\\s*', '', 'i' ); + temp := REGEXP_REPLACE( temp, E'SR\.\\s*', '', 'i' ); END IF; IF temp ilike '%SR,%' THEN suffix := 'Sr.'; temp := REGEXP_REPLACE( temp, E'SR,\\s*', ',', 'i' ); END IF; - IF temp ilike '%III%' THEN + IF temp like '%III%' THEN suffix := 'III'; - temp := REGEXP_REPLACE( temp, E'III', '', 'i' ); + temp := REGEXP_REPLACE( temp, E'III', '' ); END IF; - IF temp ilike '%II%' THEN + IF temp like '%II%' THEN suffix := 'II'; - temp := REGEXP_REPLACE( temp, E'II', '', 'i' ); + temp := REGEXP_REPLACE( temp, E'II', '' ); END IF; - IF temp ilike '%IV%' THEN + IF temp like '%IV%' THEN suffix := 'IV'; - temp := REGEXP_REPLACE( temp, E'IV', '', 'i' ); + temp := REGEXP_REPLACE( temp, E'IV', '' ); END IF; + temp := REGEXP_REPLACE( temp, '\(\)', ''); family_name := BTRIM( REGEXP_REPLACE(temp,E'^(\\S+).*$',E'\\1') ); + family_name := REGEXP_REPLACE( family_name, ',', '' ); first_given_name := CASE WHEN temp ~ E'^\\S+$' THEN 'N/A' ELSE BTRIM( REGEXP_REPLACE(temp,E'^\\S+\\s+(\\S+).*$',E'\\1') ) END; + first_given_name := REGEXP_REPLACE( first_given_name, ',', '' ); second_given_name := CASE WHEN temp ~ E'^\\S+$' THEN '' ELSE BTRIM( REGEXP_REPLACE(temp,E'^\\S+\\s+\\S+\\s*(.*)$',E'\\1') ) END; + second_given_name := REGEXP_REPLACE( second_given_name, ',', '' ); RETURN ARRAY[ family_name, prefix, first_given_name, second_given_name, suffix ]; END;