Используя путь относительно местоположения сценария 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