diff --git a/setup.sh b/setup.sh index c2c6837..b7416b8 100644 --- a/setup.sh +++ b/setup.sh @@ -10,13 +10,17 @@ VOCAB_DATA_DIR="$VOCAB_DATA_DIR" SCHEMA_NAME="$SCHEMA_NAME" # SQL files -sql_files=(pk.sql constraint.sql index.sql) +sql_files=(primary-keys.sql constraints.sql indices.sql) vocab_tables=(DRUG_STRENGTH CONCEPT CONCEPT_RELATIONSHIP CONCEPT_ANCESTOR CONCEPT_SYNONYM VOCABULARY RELATIONSHIP CONCEPT_CLASS DOMAIN) # Directory paths script_dir="/scripts" temp_dir="/tmp" +echo "Waiting for the Database.." +wait4x tcp://${DB_HOST}:${DB_PORT} --timeout 60 +echo "Database is up - continuing.." + # Check if the schema already exists schema_exists=$(PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -tAc "SELECT 1 FROM information_schema.schemata WHERE schema_name = '${SCHEMA_NAME}'") if [ "$schema_exists" ]; then @@ -24,18 +28,18 @@ if [ "$schema_exists" ]; then exit 0 # Exit gracefully fi -# Create schema +echo "Creating schema.." PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "CREATE SCHEMA IF NOT EXISTS ${SCHEMA_NAME};" -# Create tables +echo "Creating tables.." temp_ddl="${temp_dir}/temp_ddl.sql" sed "s/@cdmDatabaseSchema/${SCHEMA_NAME}/g" "${script_dir}/ddl.sql" > "$temp_ddl" PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f "$temp_ddl" rm "$temp_ddl" -# Load vocabs +echo "Loading data.." for table in "${vocab_tables[@]}"; do - echo 'loading: ' $table + echo 'Loading: ' $table table_lower=$(echo "$table" | tr '[:upper:]' '[:lower:]') PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" \ -c "\COPY ${SCHEMA_NAME}.${table_lower} FROM '${VOCAB_DATA_DIR}/${table}.csv' WITH (FORMAT csv, DELIMITER E'\t', NULL '""', QUOTE E'\b', HEADER, ENCODING 'UTF8')" @@ -43,6 +47,7 @@ done # Create pk, constraints, indexes for sql_file in "${sql_files[@]}"; do + echo "Creating $sql_file.." input_file="${script_dir}/${sql_file}" temp_file="${temp_dir}/temp_${sql_file}" @@ -51,3 +56,5 @@ for sql_file in "${sql_files[@]}"; do PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f "$temp_file" rm "$temp_file" done + +echo "OMOP CDM creation finished."