Используя путь относительно местоположения сценария SQL в этом сценарии?

У меня есть сценарий sql в

dir:\some\path\script.sql

Этот скрипт выполняется через SqlDeveloper и spoolнекоторые данные в

dir:\some\path\data\tablename.csv

Теперь я должен сохранить скрипт в файле.sql, потому что, если я выполню его непосредственно из SqlDeveloper, spool пишет сам запрос в файл, который я не хочу.

Но я также не хочу жестко кодировать пути, потому что у каждого в моей команде есть свои репозитории GIT, где они хотят, поэтому сценарий, которого я хотел бы достичь, заключается в том, что мой сценарий sql использует относительные пути из своего местоположения для записи файлов csv.

В настоящее время script.sql выглядит примерно так:

SET COLSEP ";"
spool dir:\some\path\data\table1.csv
select /*csv*/ * from table1;
spool off;

и я хочу выглядеть примерно так

SET COLSEP ";"
spool current_dir\data\table1.csv
select /*csv*/ * from table1;
spool off;

Таким образом, при использовании сценария путь должен быть набран только один раз при вызове сценария.

1 ответ

Больше обходного пути, чем решение проблемы, но сейчас я только что создал scriptRunner.sql файл в том же каталоге, что и script.sql который просто запускает скрипт (@script.sql).

При открытии этого файла создается впечатление, что рабочий каталог SqlDevelopers настроен на каталог, в котором оба .sql файлы находятся и это свойство распространяется на вызываемый скрипт, поэтому я могу просто использовать

spool data\table1.csv

Другие вопросы по тегам