如何将变量从shell脚本传递给sql文件

时间:2017-09-21 11:24:41

标签: sql linux postgresql shell

我有一个名为test.sh的shell文件,它调用其他sql文件' table.sql'。 ' table.sql'文件将创建一些表,但我想在特定的模式中创建表' bird'。

sql文件的内容。

create schema bird; --bird should not be hard coded it should be in variable
set search_path to 'bird';
create table bird.sparrow(id int, name varchar2(20));

shell文件的内容。

dbname=$1
cnport=$2
schemaname=$3
filename=$4

gsql -d ${dbname} -p ${cnport} -f ${filenam} #[how to give schema name here so that it can be used in table.sql without hardcoding]

我将像这样执行我的shell文件

sh test.sh db1 9999 bird table.sql 

1 个答案:

答案 0 :(得分:2)

在shell中更容易,例如:

dbname=$1
cnport=$2
schemaname=$3
filename=$4

gsql -d ${dbname} -p ${cnport} <<EOF
create schema $3; --bird should not be hard coded it should be in variable
set search_path to '$3';
create table bird.sparrow(id int, name varchar2(20));
EOF

否则使用psql变量