将 bash 参数中的多个不同内容添加到名为 sql 脚本的变量集
Add multiple and various content from bash parameter to a variable set into the sql script called
我有一个 SQL 脚本和一个 sh 可执行文件 运行 一个脚本在我的数据库上执行一些操作。
我的主要问题是我正在寻找如何做以下事情:
启动脚本时从我的bash参数中发送一个参数数组,我的实际命令是:
./myscript.sh databaseName user thirdParameterToPassAsAString
'fourthParameterElement1','fourthParameterElement2','fourthParameterElement3'
我的脚本内容:
#!/bin/bash
set -e
psql <<EOF
set search_path = search_path;
set firstParameterusedinSQLScript = ;
set Param_List = ;
\i my_script.sql
EOF
和我遇到问题的 sql 部分:
where ae.example in (:Param_List)
我当然对这个 where 子句有一些疑问。
所以问题是我该怎么做?
您是否考虑过在执行 sql 之前更改 sql 本身(不更改包含它的原始 sql 文件)(通过 sed 替换参数)。
如果这是你的选择,你可以定义一个辅助函数,比如
function prepare_script() {
cat <<EOF
set search_path = search_path;
EOF
sed -e"s|:Param_List||g" -e"s|firstParameterusedinSQLScript||g" Requetes_retour_arriere_fiab_x_siret.sql
}
你可以这样称呼它:
prepare_script "" "" "" | psql
请注意,您不会更改磁盘本身上的文件,您只需使用 set
读取它并让它在 stdout
上输出更改后的 sql 并将其通过管道传输到 psql
.
我有一个 SQL 脚本和一个 sh 可执行文件 运行 一个脚本在我的数据库上执行一些操作。
我的主要问题是我正在寻找如何做以下事情:
启动脚本时从我的bash参数中发送一个参数数组,我的实际命令是:
./myscript.sh databaseName user thirdParameterToPassAsAString
'fourthParameterElement1','fourthParameterElement2','fourthParameterElement3'
我的脚本内容:
#!/bin/bash
set -e
psql <<EOF
set search_path = search_path;
set firstParameterusedinSQLScript = ;
set Param_List = ;
\i my_script.sql
EOF
和我遇到问题的 sql 部分:
where ae.example in (:Param_List)
我当然对这个 where 子句有一些疑问。
所以问题是我该怎么做?
您是否考虑过在执行 sql 之前更改 sql 本身(不更改包含它的原始 sql 文件)(通过 sed 替换参数)。 如果这是你的选择,你可以定义一个辅助函数,比如
function prepare_script() {
cat <<EOF
set search_path = search_path;
EOF
sed -e"s|:Param_List||g" -e"s|firstParameterusedinSQLScript||g" Requetes_retour_arriere_fiab_x_siret.sql
}
你可以这样称呼它:
prepare_script "" "" "" | psql
请注意,您不会更改磁盘本身上的文件,您只需使用 set
读取它并让它在 stdout
上输出更改后的 sql 并将其通过管道传输到 psql
.