Запуск SQL запросов через командную строку с sqlplus
Быстрый ответ
Выполнение запроса в SQLPlus из командной строки без лишних сообщений можно осуществить с помощью echo и оператора пайплайна (|
):
echo "SELECT SYSDATE FROM dual;" | sqlplus -s пользователь/пароль@база # "Узнайте текущую дату мгновенно!"
Следует заменить пользователь
, пароль
и база
на актуальные учетные данные и название вашей базы данных. Таким образом, вы сможете быстро получить текущую дату из системной таблицы Oracle — dual
.
Защитите свои учетные данные
Безопасность при работе с базами данных возможно одна из главных проблематик. Ввод учетных данных непосредственно в команды – это не просто плохая практика, но и серьезный риск. Для защиты информации имеются различные методы, включая использование переменных окружения или кошелька Oracle для надежного хранения конфиденциальных данных.
# Никогда не делайте такого дома или на работе!
echo "SELECT SYSDATE FROM dual;" | sqlplus scott/tiger@ORCL
Многострочные запросы с помощью Here documents
Here documents станут вашими союзниками при работе с многострочными или сложными SQL-запросами:
sqlplus -s пользователь/пароль@база <<EOF # "Уважаемый SQLPlus, вот что нужно выполнить..."
SELECT department_id, department_name
FROM departments
WHERE location_id = 1700;
EXIT; # "...и завершить эту операцию!"
EOF
Операторы <<EOF
и EOF
позволяют определить блок команд, которые будут исполнены в SQLPlus прямо из командной строки для выполнения сложных запросов.
Эффективное подключение к SQLPlus
Перед тем как подключаться, убедитесь, что строки подключения имя_пользователя/пароль@хост:порт/сервис
соответствуют вашим настройкам:
sqlplus -s пользователь/пароль@localhost:1521/ORCL # "Попытка подключения к SQLPlus по указанному порту"
Для более эффективного подключения используйте ключ -s
. Он подавляет излишек сообщений, позволяя получить чистый вывод и сохранить спокойствие разработчика.
Визуализация
Операцию выполнения команды в терминале можно представить как экспресс-доставку:
🚂💨💼🖥️
Пояснение:
🚂 – Поводырь командной строки начинает работать
💨 – Высокая скорость выполнения операции
💼 – Пакет запросов SQLPlus в пути
🖥️ – База данных, ожидающая выполнения
Основная идея: Скорость и предсказуемость в выполнении SQL-запросов.
Без лишнего: лучшие запросы
Создание временных файлов может усложнить процесс работы, когда можно выполнить однострочную команду и получить результат прямо в терминале.
echo "SELECT SYSDATE FROM dual;" | sqlplus -s пользователь/пароль@база # "Держим всё под контролем!"
Этот метод позволяет мгновенно видеть результаты запросов прямо в терминале.
Работа со сложными SQL-запросами
Для сложных SQL-запросов команда echo -e
облегчает форматирование и делает их более читаемыми:
echo -e "SELECT \\n department_id, \\n department_name \\nFROM departments;" | sqlplus -s пользователь/пароль
Итак, давайте сделаем наши SQL-запросы удобными для восприятия и минимально нагружающими ресурсы!
Защитите свои скрипты
Очень важно придерживаться тщательной гигиены в отношении имен пользователей и паролей при внедрении команд SQLPlus в скрипты. В автоматизированных сценариях всегда стоит использовать параметризацию или криптографические методы.
# При работе со скриптами с безопасностью не шутят! (Если, конечно, вы не хакер.)
Полезные материалы
- Руководство для пользователя и справочная информация по SQL*Plus 19c — официальная документация Oracle по SQL*Plus.
- Вопросы — Ask Tom, ваш дружелюбный советник по SQL*Plus.
- Как передавать переменные из shell-скриптов в SQL*Plus — стоит прочитать эту статью, чтобы повысить эффективность ваших скриптов.