0
私は、redshiftで実行されるddlを使用して複数のスキーマを作成しようとしています。これらのスキーマをループすると、それらのスキーマ内にテーブルを作成するためにすでに作成したddlsが実行されます。誰も私にそれをする正しいアプローチを提案することはできますか?PL/pgsql DDLを使ってredshiftでスキーマを作成し、ddlsをループしてそれぞれのスキーマにテーブルを作成するには?
私は、redshiftで実行されるddlを使用して複数のスキーマを作成しようとしています。これらのスキーマをループすると、それらのスキーマ内にテーブルを作成するためにすでに作成したddlsが実行されます。誰も私にそれをする正しいアプローチを提案することはできますか?PL/pgsql DDLを使ってredshiftでスキーマを作成し、ddlsをループしてそれぞれのスキーマにテーブルを作成するには?
レッドシフトはPL/pgsql
をサポートしていません。シェルスクリプトを使用するなど、外部で行う必要があります。
#!/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 " --------------------------------------------"
ありがとう@ジョー、私はそれを実行しようとしますが、このシェルスクリプトを使用して複数のスキーマを作成できますか?配列やループを定義するのと同じです。私は本当にあなたの助けに感謝します。 – Sam
この例では、 'SETUP_Schemas.txt'には作成されるスキーマ名の簡単なリストが含まれており、スクリプトはそれをループします。 'SETUP_Schemas.txt'の各行の内容は変数' $ p'として 'while'ループに入ります。同じ方法を使用して、テーブルのリストをループすることができます(各テーブルのDDLファイルでスクリプトを指す)。 –
ありがとう@ジョー、それをやろうとします。あなたの助けに感謝。 – Sam