嗨,如果有人可以帮助我,我有一个.sh脚本执行4个.sql脚本,每个脚本都针对一个模式执行。目前架构名称是硬编码的,但我想让它可配置。
鉴于以下内容,我将如何将shell脚本中的参数传递给.files?
在我的shell脚本中完成对.sql的调用,如下所示
ECHO “DELETING SCHEME….”
psql -f $SCRIPT_DIR/delete_data.sql my_db postgres
ECHO “DATABASE SCHEMA DELETED..”
delete_data.sql
drop schema my_schema cascade;
create schema my_schema;
答案 0 :(得分:1)
您可以使用占位符替换my_schema
部分,例如%SCHEMA%
:
drop schema %SCHEMA% cascade;
create schema %SCHEMA%;
然后我们使用sed
运行替换,并将结果传递到psql
(从stdin读取相当于从文件读取):
sed "s/%SCHEMA%/$schemaName/" $SCRIPT_DIR/delete_data.sql | psql powa_aim_db postgres
答案 1 :(得分:1)
您可以使用SQL的heredoc执行此操作:
my_schema="$1"
ECHO “DELETING SCHEME….”
psql <<SQL
drop schema $my_schema cascade
create schema $my_schema
SQL
ECHO “DATABASE SCHEMA DELETED..”
然后使用模式名称作为第一个参数调用脚本:
$ ./my_script my_schema_name