Как отформатировать строку подключения oracle и вывести запрос в файл

#oracle #unix #sqlplus #sql-loader #tnsnames

Вопрос:

Я пытаюсь подключиться к базе данных oracle, запросить ее и отправить результаты в файл txt. Когда я запускаю свою инструкцию, это отображается в файле .txt:

введите описание изображения здесь

На самом деле это должны быть значения из моего sql-скрипта.

Вот строка, которую я запускаю:

 sql_file1=Cb.sql

sqlplus -s "username/pwd@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=my_host)(Port=1521))(CONNECT_DATA=(SERVICE_NAME=my_ser_name))))" @sql/$sql_file1 > /home/path/to/my/files/'cb.txt'
 

Какие-либо причины, по которым мой ‘cb.txt» файл показывает скриншот сверху вместо любой даты из запроса в моем файле sql?

Ответ №1:

У вас есть дополнительные ) данные в строке подключения:

 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=my_host)(Port=1521))(CONNECT_DATA=(SERVICE_NAME=my_ser_name))))
 

должно быть

 sqlplus -s "username/pwd@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=my_host)(Port=1521))(CONNECT_DATA=(SERVICE_NAME=my_ser_name)))" @sql/$sql_file1 > /home/path/to/my/files/cb.txt
 

Но еще проще использовать строку EZConnect:

 sqlplus -s "username/pwd@//my_host:1521/my_ser_name" @sql/$sql_file1