reemplace la variable Unix con valor en el archivo SQL

reemplace la variable Unix con valor en el archivo SQL

Tengo un archivo SQL con múltiples variables Unix para colocar el registro en una ubicación específica y necesito reemplazar la variable Unix con la ruta real antes de ejecutar el archivo SQL.

`cat a.sql
  accept v_answer prompt "Please Enter Name:"
  spool $SQL_SPOOL_LOG_DIR/db_lists.log
  select name from dbs;
  spool off
  spool $SQL_SPOOL_LOG_DIR/db_test.log
  declare
    v_sql varchar2(250);
   begin
     v_sql := 'alter system set container=db; ';
     dbms_output.put_line ( v_sql);
     v_sql := 'create table test (eno number);';
     dbms_output.put_line ( v_sql);
    v_sql := 'insert into test values (23423);';
     dbms_output.put_line ( v_sql); 
   end;
   /
  spool off
  ! grep -i 'alter\|create\|insert' spool $SQL_SPOOL_LOG_DIR/db_test.log > spool $SQL_CUSTOM_SQL_DIR/table_create.sql
  spool $SQL_SPOOL_LOG_DIR/table_create.log
  @$SQL_CUSTOM_SQL_DIR/table_create.sql
  spool off
exit;`

Quiero reemplazar la siguiente variable con la ruta real antes de ejecutar el archivo SQL

`$SQL_SPOOL_LOG_DIR
 $SQL_CUSTOM_SQL_DIR`

Respuesta1

Escriba un pequeño contenedor bash alrededor de este archivo y usesedpara reemplazar las variables con los valores reales antes de ejecutar el archivo sql.

Ejemplo con valores codificados:

#!/bin/bash
SQL_SPOOL_LOG_DIR="/path/to/log/dir"
SQL_CUSTOM_SQL_DIR="/path/to/sql/dir"

sed -i 's|$SQL_SPOOL_LOG_DIR|'"$SQL_SPOOL_LOG_DIR"'|g' a.sql
sed -i 's|$SQL_CUSTOM_SQL_DIR|'"$SQL_CUSTOM_SQL_DIR"'|g' a.sql


mysql < a.sql #example

información relacionada