Как запустить скрипт sql в Linux

Обновлено: 21.11.2024

Во время работы разработчиком необходимо автоматизировать некоторые из существующих SQL-запросов с помощью сценария bash без доступа к интерактивной подсказке MySQL. В этом сообщении блога я покажу различные способы выполнения SQL-запросов с помощью Bash Script или командной строки. В этом блоге я буду использовать базу данных MySQL.

Прежде чем читать эту запись в блоге, убедитесь, что у вас установлены клиент и сервер MySQL. Используйте приведенную ниже команду, чтобы проверить, установлен ли MySQL на вашем компьютере.

Выполнение SQL-запроса из командной строки Linux

В таблице ниже показаны различные параметры, которые мы можем использовать при выполнении запросов.

ОпцияОписание
–user, -uУчетная запись пользователя MySQL, которая используется для подключения к серверу базы данных SQL.
–password, -pПароль, который используется для подключения к базе данных SQL.
–база данных, -DИмя базы данных, к которой нам нужно подключиться.
–host, -hИмя хоста, на котором установлена ​​база данных.
–skip-column-names, -N< /td>Он гарантирует, что имена столбцов не будут записаны в
–batch, -BИспользуется для печати результатов с помощью табуляции в качестве разделителя столбцов, с каждой строкой на новой строке.

Пример отображения всех таблиц из таблиц клиентов

-pPASS_WORD При передаче PASS_WORD через командную строку у нас не должно быть пробела между паролем и -p

Примечание. Здесь я передаю пароль в командной строке в демонстрационных целях. Не рекомендуется выполнять запросы в производственной среде.

Выполнить запрос SQL на явно указанном хосте

Чтобы выполнить SQL-запрос на явно указанном хосте, мы используем параметр -h и указываем имя хоста как HOSTNAME .

Используйте приведенную ниже ссылку в качестве примера для подключения к хосту localhost.

Выполнить SQL-запрос к указанной базе данных:

Он выполнит SQL-запрос, используя имя хоста, определенное параметром -h для указанного HOSTNAME, и базу данных, определенную параметром DATABASE с параметром D.

Пример:

Скрытие заголовков столбцов:

Мы используем параметр -N, чтобы скрыть заголовок столбца.

Сохранить результат в файл

Мы можем перенаправить результат в определенное место, чтобы сохранить результат запроса в файле, используя знак > и имя файла.

Пример:

Здесь мы пытаемся сохранить результат запроса в папке /home/hduser/tutorials/rdbms/result.txt.

Запуск SQL-запросов из сценария Bash

Пример. Создайте сценарий оболочки с именем shell_sql_single_query.sh

Дайте правильное разрешение сценарию оболочки и запустите его.

Выполнение нескольких SQL-запросов с использованием сценария оболочки

Мы можем использовать основанную конструкцию для выполнения нескольких SQL-запросов с использованием сценария оболочки.

Эта часть сообщает оболочке, что это будет многострочный SQL-запрос до тега EOF.

Нам нужно убедиться, что перед вторым тегом EOF нет пробелов. Если есть свободное место, оно будет считаться частью SQL-запроса.

Вместо EOF мы можем использовать такие имена, как

Передача переменной в SQL-запрос из сценария Bash

Здесь мы передаем базу данных из сценария bash в запрос SQL.

Ниже приведен пример сценария, показывающий, как запустить несколько сценариев SQL с собственной переменной. Мы определяем две переменные с именами DATABASE_NAME и TABLE_NAME, которые используются в запросе SQL.

Когда мы запускаем приведенный выше запрос, мы получаем следующие результаты.

Запуск файла .sql

Я создал простой файл SQL в этом месте /home/hduser/tutorials/rdbms

Чтобы запустить этот файл SQL из командной строки или сценария Bash, нам нужно использовать приведенный ниже синтаксис.

Заключение

В этом сообщении блога мы узнали, как использовать сценарий оболочки Unix для подключения к базе данных и выполнения запроса SQL. Мы также узнаем, как передавать переменные в SQL-запросы с помощью bash-скрипта. Мы также узнаем, как запускать несколько SQL одновременно.

Задания SQL Server используются для регулярного выполнения одной и той же последовательности команд в базе данных SQL Server. В этом руководстве представлен пример создания задания агента SQL Server в Linux с использованием как Transact-SQL, так и SQL Server Management Studio (SSMS).

  • Установка агента SQL Server в Linux
  • Создайте новое задание для ежедневного резервного копирования базы данных
  • Запланируйте и запустите задание
  • Выполните те же действия в SSMS (необязательно)

Об известных проблемах с агентом SQL Server в Linux см. примечания к выпуску.

Предпосылки

Для прохождения этого руководства необходимы следующие предварительные условия:

  • Компьютер Linux со следующими предварительными условиями:
    • SQL Server (RHEL, SLES или Ubuntu) с инструментами командной строки.

    Следующие предварительные требования являются необязательными:

    Включить агент SQL Server

    Чтобы использовать агент SQL Server в Linux, необходимо сначала включить агент SQL Server на машине, на которой уже установлен SQL Server.

    1. Чтобы включить агент SQL Server, выполните указанные ниже действия.
      1. Перезапустите SQL Server с помощью следующей команды:

      Начиная с SQL Server 2017 CU4, агент SQL Server включен в пакет mssql-server и по умолчанию отключен. Для агента, настроенного до посещения CU4, установите агент SQL Server в Linux.

      Создайте образец базы данных

      Выполните следующие действия, чтобы создать образец базы данных с именем SampleDB. Эта база данных используется для ежедневного задания резервного копирования.

      На компьютере с Linux откройте сеанс терминала bash.

      Используйте sqlcmd для запуска команды Transact-SQL CREATE DATABASE.

      Убедитесь, что база данных создана, перечислив базы данных на вашем сервере.

      Создать задание с помощью Transact-SQL

      Следующие шаги создают задание агента SQL Server в Linux с помощью команд Transact-SQL. Задание запускает ежедневное резервное копирование образца базы данных SampleDB.

      Для выполнения этих команд можно использовать любой клиент T-SQL. Например, в Linux вы можете использовать sqlcmd или Visual Studio Code. С удаленного сервера Windows вы также можете выполнять запросы в SQL Server Management Studio (SSMS) или использовать пользовательский интерфейс для управления заданиями, как описано в следующем разделе.

      Используйте хранимую процедуру sp_add_job, чтобы создать задание с именем Daily SampleDB Backup.

      Вызовите sp_add_jobstep, чтобы создать шаг задания, создающий резервную копию базы данных SampleDB.

      Затем создайте ежедневное расписание для своей работы с помощью sp_add_schedule.

      Прикрепите расписание задания к заданию с помощью sp_attach_schedule.

      Используйте хранимую процедуру sp_add_jobserver, чтобы назначить задание целевому серверу. В этом примере целью является локальный сервер.

      Запустите задание с помощью sp_start_job.

      Создать задание с помощью SSMS

      Вы также можете удаленно создавать задания и управлять ими с помощью SQL Server Management Studio (SSMS) в Windows.

      Запустите SSMS в Windows и подключитесь к экземпляру Linux SQL Server. Дополнительные сведения см. в разделе Управление SQL Server в Linux с помощью SSMS.

      Убедитесь, что вы создали образец базы данных с именем SampleDB.

      Убедитесь, что агент SQL установлен и настроен правильно. Найдите знак «плюс» рядом с агентом SQL Server в обозревателе объектов. Если агент SQL Server не включен, попробуйте перезапустить службу mssql-server в Linux.

      В этом разделе представлено введение в SQL Command Line (SQL*Plus), интерактивный и пакетный инструмент запросов из командной строки, который устанавливается вместе с Oracle Database Express Edition.

      Этот раздел содержит следующие темы:

      Информацию о выполнении операторов языка SQL см. в Главе 3, "Использование SQL".

      Руководство пользователя и справочник по SQL*Plus для получения полной информации о SQL*Plus

      Справочник по Oracle Database SQL для получения информации об использовании операторов SQL

      Oracle Database Express Edition, двухдневный администратор баз данных для получения информации о подключении к Oracle Database XE с помощью командной строки SQL

      Обзор командной строки SQL

      Командная строка SQL (SQL*Plus) — это инструмент командной строки для доступа к Oracle Database XE. Он позволяет вводить и выполнять команды и операторы SQL, PL/SQL и SQL*Plus для:

      Запрос, вставка и обновление данных

      Выполнение процедур PL/SQL

      Изучите определения таблиц и объектов

      Разработка и запуск пакетных сценариев

      Выполнять администрирование базы данных

      Вы можете использовать командную строку SQL для создания отчетов в интерактивном режиме, для создания отчетов в виде пакетных процессов и для записи результатов в текстовый файл, на экран или в файл HTML для просмотра в Интернете.

      Использование командной строки SQL

      В этом разделе описывается командная строка SQL (SQL*Plus), утилита командной строки для запуска SQL и PL/SQL.

      Это содержит следующие темы:

      Перед запуском командной строки SQL убедитесь, что необходимые переменные среды настроены правильно. Информацию о настройке переменных среды для командной строки SQL см. в разделе Oracle Database Express Edition 2 Day DBA.

      Запуск и выход из командной строки SQL

      Чтобы запустить командную строку SQL из командной строки операционной системы, введите следующее:

      При появлении запроса введите имя пользователя и пароль учетной записи пользователя (схемы), к которой вы хотите получить доступ в локальной базе данных. Например, при появлении запроса введите HR в качестве имени пользователя и my_hr_password в качестве пароля.

      Вы также можете указать имя пользователя и пароль при запуске командной строки SQL. Например:

      sqlplus hr/мой_hr_пароль

      Если вы хотите подключиться к базе данных, работающей в удаленной системе, вам необходимо включить строку подключения при запуске командной строки SQL. Например:

      sqlplus hr/ my_hr_password @ host_computer_name

      После запуска командной строки SQL приглашение SQL> отображается следующим образом:

      По приглашению SQL> вы можете вводить операторы SQL.

      Если вы хотите выйти из командной строки SQL, введите EXIT в приглашении SQL следующим образом:

      Отображение справки по командной строке SQL

      Чтобы отобразить список разделов справки для командной строки SQL, введите HELP INDEX в приглашении SQL следующим образом:

      Из списка разделов справки командной строки SQL можно отобразить справку по отдельному разделу, введя HELP с названием раздела. Например, ниже показана справка о команде COLUMN командной строки SQL, которая позволяет форматировать вывод столбца:

      SQL> ПОМОЩЬ СТОЛБЦА

      Ввод и выполнение операторов и команд SQL

      Чтобы ввести и выполнить операторы или команды SQL, введите оператор или команду в приглашении SQL. В конце оператора SQL поставьте точку с запятой (;), а затем нажмите клавишу Enter, чтобы выполнить оператор. Например:

      SQL> SELECT * FROM сотрудников;

      Если оператор не помещается на одной строке, введите первую строку и нажмите клавишу Enter. Продолжайте вводить строки и завершайте последнюю строку точкой с запятой (;). Например:


      SQL> ВЫБЕРИТЕ employee_id, first_name, last_name
      2 FROM сотрудников
      3 WHERE employee_id >= 105 AND employee_id

      Вывод предыдущего оператора SELECT аналогичен следующему:


      EMPLOYEE_ID FIRST_NAME LAST_NAME
      ----------- -------------------- ----- ------------------
      105 Дэвид Остин
      106 Валли Патабалла
      107 Диана Лоренц
      108 Нэнси Гринберг
      109 Даниэль Фавиет
      110 Джон Чен
      Выбрано 6 рядов.

      Обратите внимание, что завершающая точка с запятой (;) необязательна для команд командной строки SQL, таких как DESCRIBE или SET , но обязательна для операторов SQL.

      Команда DESCRIBE командной строки SQL

      Командная строка SQL предоставляет команду DESCRIBE для отображения описания объекта базы данных. Например, ниже показана структура таблицы сотрудников. Это описание полезно при построении операторов SQL, управляющих таблицей сотрудников.


      SQL> DESCRIBE сотрудников
      Имя Null? Тип
      ------------------------------------------------------- ----- --- ------------
      EMPLOYEE_ID NOT NULL NUMBER(6)
      FIRST_NAME VARCHAR2(20)
      LAST_NAME NOT NULL VARCHAR2(25)
      EMAIL NOT NULL VARCHAR2(25)
      PHONE_NUMBER VARCHAR2(20)
      HIRE_DATE NOT NULL DATE
      JOB_ID NOT NULL VARCHAR2(10)
      НОМЕР ЗАРПЛАТЫ(8,2)
      НОМЕР COMMISSION_PCT(2,2)
      MANAGER_ID NUMBER(6)
      DEPARTMENT_ID NUMBER(4)

      Команды SET командной строки SQL

      Команды SET командной строки SQL можно использовать для указания различных параметров командной строки SQL, таких как формат вывода операторов SQL SELECT. Например, следующие команды SET задают количество строк для каждой страницы и количество символов для каждой строки вывода:


      SQL> SET PAGESIZE 200
      SQL> SET LINESIZE 140

      Чтобы включить вывод блоков PL/SQL с помощью DBMS_OUTPUT.PUT_LIN E, используйте следующее:

      SQL> ВКЛЮЧИТЬ SERVEROUTPUT

      Чтобы просмотреть все настройки, введите в приглашении SQL следующее:

      Информацию о параметре SERVEROUTPUT командной строки SQL для отображения выходных данных программы PL/SQL см. в разделе «Ввод и вывод данных с помощью PL/SQL».

      Руководство пользователя и справочник по SQL*Plus для получения информации о настройке среды командной строки SQL с файлом входа в систему

      Запуск скриптов из командной строки SQL

      Вы можете использовать текстовый редактор для создания файлов сценариев командной строки SQL, содержащих операторы SQL*Plus, SQL и PL/SQL. Для согласованности используйте расширение .sql для имени файла сценария.

      Файл сценария SQL выполняется с помощью команды START или @. Например, в среде Windows вы можете выполнить сценарий SQL следующим образом:

      Файл сценария SQL можно выполнить в среде Linux следующим образом:

      SQL> НАЧАТЬ /home/cjones/my_scripts/my_sql_script.sql

      Вы можете использовать SET ECHO ON, чтобы скрипт повторял каждое выполняемое выражение. Вы можете использовать SET TERMOUT OFF, чтобы предотвратить отображение вывода скрипта на экране.

      При запуске скрипта необходимо указать полный путь, если только скрипт не расположен в каталоге, из которого была запущена командная строка SQL, или скрипт не находится в расположении скрипта по умолчанию, указанном в переменной среды SQLPATH.< /p>

      Oracle Database Express Edition, двухдневный администратор баз данных для получения информации о настройке переменных среды для Oracle Database Express Edition

      Руководство пользователя и справочник по SQL*Plus для получения информации об установке переменной среды SQLPATH в командной строке SQL для указания расположения сценариев SQL по умолчанию

      Буферизация из командной строки SQL

      Команду SPOOL можно использовать для направления вывода из командной строки SQL в файл на диске, что позволяет сохранить вывод для дальнейшего просмотра.

      Чтобы запустить буферизацию вывода в файл операционной системы, введите команду SPOOL, за которой следует имя файла. Например:

      SQL> SPOOL my_log_file.log

      Если вы хотите добавить вывод в существующий файл:

      SQL> SPOOL my_log_file.log APPEND

      Чтобы остановить буферизацию и закрыть файл, введите следующее:

      Использование переменных в командной строке SQL

      Вы можете создавать запросы, использующие переменные, чтобы сделать операторы SELECT более гибкими. Вы можете определить переменную перед выполнением инструкции SQL или указать, что инструкция запрашивает значение переменной во время выполнения инструкции SQL.

      При использовании переменной в операторе SQL имя переменной должно начинаться с амперсанда (&).

      Этот раздел содержит следующие темы:

      Информацию об использовании переменных связывания в коде PL/SQL см. в разделе "Использование переменных связывания с PL/SQL".

      Запрос значения переменной в запросе

      Вы можете использовать &, чтобы указать переменную, которую вы хотите определить динамически. В примере A-1 включение переменной &employee_id приводит к тому, что оператор SQL запрашивает значение при выполнении оператора. Затем вы можете ввести значение для employee_id, которое соответствует информации о сотруднике, которую вы хотите отобразить, например идентификатор сотрудника 125. Обратите внимание, что вы можете использовать любое имя для переменной, например &my_variable .

      Пример A-1 Запрос значения переменной в командной строке SQL

      При выполнении предыдущего оператора SELECT вывод будет аналогичен следующему:


      Введите значение для employee_id: 125
      .
      EMPLOYEE_ID LAST_NAME JOB_ID
      ----------- ------------------------- --- -------
      125 Nayer ST_CLERK

      Повторное использование значения переменной в запросе

      Вы можете использовать &&, чтобы указать переменную, которую вы хотите определить динамически несколько раз, но только один раз запрашивать у пользователя. В примере A-2 включение переменной &&column_name приводит к тому, что инструкция SQL запрашивает значение при выполнении инструкции. Введенное значение заменяет все остальные вхождения &&имя_столбца в операторе SQL.

      Пример A-2 Повторное использование значения переменной в командной строке SQL

      Определение значения переменной для запроса

      В примере A-3 переменная &job_id определяется перед выполнением оператора SQL с помощью команды DEFINE, и заданное значение заменяется переменной при выполнении оператора. Поскольку переменная уже определена, вам не предлагается ввести значение.

      Независимо от того, устанавливаете ли вы пакет, выполняете инструкции или восстанавливаете резервную копию, полезно иметь возможность выполнить сценарий SQL, и он сделает всю работу за вас, а не введет все это вручную.< /p>

      Большинство менеджеров баз данных с графическим интерфейсом имеют простой параметр импорта, отображаемый на видном месте в строке меню. Вот как это сделать из командной строки (и PHPMyAdmin, если вы не любите командную строку).

      Из командной строки MySQL

      Если вы вошли в командную строку MySQL, вы можете использовать операторы MySQL для выполнения содержимого скрипта/файла с помощью исходной команды:

      • Вы должны указать полный абсолютный путь к файлу, который хотите прочитать, поскольку может быть неясно, какой рабочий каталог будет находиться в MySQL
      • Файл должен быть расположен в той же системе, в которой работает сервер MySQL, или в доступной ему файловой системе.
      • Путь не должен заключаться в кавычки!

      Из командной строки/оболочки

      Вы также можете выполнить файл SQL без входа в MySQL из оболочки Linux — это особенно полезно, если вы хотите сделать свою команду частью сценария Bash/Shell:

      Выше данные для входа в базу данных предоставляются команде MySQL, которая затем передает команды через стандартное перенаправление из заданного файла SQL. Путь к файлу SQL может быть относительным, и файл должен существовать на вашем локальном компьютере — он не обязательно должен существовать на удаленном сервере MySQL, поэтому он идеально подходит для запуска локальных сценариев SQL на удаленных серверах.

      Сохранение вывода скрипта SQL

      Если вы хотите сохранить выходные данные, сгенерированные во время работы скрипта, а не просто выводить их на экран, вы снова можете использовать стандартное перенаправление для перенаправления вывода в файл:

      Команда > направляет вывод команды в заданный файл результатов. Если файл существует, он перезаписывается.

      Использование phpMyAdmin

      Если вы используете phpMyAdmin для администрирования сервера MySQL, вы также можете запускать оттуда файлы MySQL. Это хороший инструмент для тех, кто не умеет работать в командной строке.

      Перейдите к базе данных, в которой вы хотите выполнить команды SQL, затем перейдите на вкладку импорта и найдите файл, который вы хотите выполнить.

      Когда будете готовы, нажмите кнопку начать. Довольно просто.

      Имейте в виду, что если вы запускаете особенно большой файл, выполнение командной строки может занять некоторое время, так как phpMyAdmin ограничен размером загружаемого файла и ограничен временем, в течение которого он может выполняться. выполнять задачи в зависимости от конфигурации веб-сервера, с которого он запущен.

      Читайте также: