문제 설명
PL/pgsql DDL을 작성하여 redshift에서 스키마를 생성한 다음 ddls를 반복하여 각 스키마에 테이블을 생성하는 방법은 무엇입니까? (How to write PL/pgsql DDL to create schemas in redshift and then looping the ddls to create tables in the respective schemas?)
redshift에서 실행할 ddl을 사용하여 여러 스키마를 생성한 다음 해당 스키마를 순환하면서 해당 스키마에서 테이블 생성을 위해 이미 생성한 ddl을 실행하려고 합니다. 아무도 나에게 올바른 접근 방식을 제안할 수 있습니까?
참조 솔루션
방법 1:
Redshift does not support PL/pgsql
. You will need to do this externally, e.g., use a shell script.
#!/bin/bash
# Create schemas in schema list
# * Generate check SQL
# * Check if schema exists
# * Create schema if it doesn't
echo " ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑"
echo " CREATING SCHEMAS >>"
while read p; do
echo " '$p' >>";
sql="SELECT 1 as exists FROM information_schema.schemata WHERE schema_name = '$p';"
check=`psql ‑d "$1" ‑t ‑c "$sql"`;
# If $check is `null`
if [ ‑z "$check" ]; then
sql="CREATE SCHEMA $p;";
create=`psql ‑d "$1" ‑c "$sql";`
# If $create = `CREATE SCHEMA`
if [ "$create" = "CREATE SCHEMA" ]; then
echo " << '$p' ‑ CREATED";
else
echo " << '$p' ‑ ERROR";
fi
else
echo " << '$p' ‑ EXISTS";
fi
done < ../Configuration/SETUP_Schemas.txt
echo " << DONE"
echo " ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑"
(by Sam、Joe Harris)