- MySQL: Run Query from Bash Script or Linux Command Line
- MySQL: Execute SQL Queries From The Linux Shell
- MySQL: Run SQL Queries From A Bash Script
- Создание и запуск заданий агента SQL Server в Linux
- предварительные требования
- Включение агента SQL Server
- Создание образца базы данных
- Создание задания с помощью Transact-SQL
- Создание задания с использованием SSMS
- Next Steps
- PostgreSQL
- Введение
- Установка
- После установки
- Подключение к БД
- Список существующих БД
- Создать базу данных
- Удалить базу данных
- Проверить кодировки
- Зайти в БД
- Запуск скрипта из файла
- Содержание базы данных
- Описание таблицы
- Пользователи
- Изменение таблицы
- Импорт из .csv файла
MySQL: Run Query from Bash Script or Linux Command Line
Sometimes it is needed to run some MySQL queries from the Linux command-line interface without accessing the interactive MySQL prompt.
For example, when it is required to schedule a backup of MySQL database or to automate execution of some SQL queries with a Bash script.
In this article i will show the most useful, from my point of view, options of the MySQL command-line client and show how to run multiple SQL queries to a database from a Bash script.
Cool Tip: List MySQL users, their passwords and granted privileges from the command-line prompt! Read more →
MySQL: Execute SQL Queries From The Linux Shell
Execute SQL query from the Linux command-line:
-pPASSWORD: This is not a typo! There should not be a space between your password and the -p when you pass it on the command-line!
Run SQL query on the explicitly specified database:
Run SQL query on the explicitly specified host:
Suppressing column headings:
Suppress table borders:
Save the output to a file:
Cool Tip: Create a MySQL database and GRANT ALL PRIVILEGES on it to a user! Simple and clear MySQL tutorial with good examples! Read more →
The most useful MySQL options when executing SQL queries from the Linux command-line or a Bash script:
Option | Description |
---|---|
—user , -u | The MySQL user name to use when connecting to the server. |
—password , -p | The password to use when connecting to the server. |
—database , -D | The database to use. |
—host , -h | Connect to the MySQL server on the given host. |
—skip-column-names , -N | Do not write column names in results. |
—batch , -B | Print results using tab as the column separator, with each row on a new line. |
MySQL: Run SQL Queries From A Bash Script
The part tells the shell that i am going to enter multi-lines until the EOF tag.
Note that here shouldn’t be any spaces just before the second EOF tag, otherwise it will be considered as a part of the SQL query.
By the way, you can rename the EOF to anything you want, e.g. .
Cool Tip: Do you have a backup? You MUST have it! Backup MySQL databases from the command-line! This is really easy! Read more →
Use the following construction if you need to run multiple SQL queries from a Bash script:
Источник
Создание и запуск заданий агента SQL Server в Linux
Применимо к: SQL Server (все поддерживаемые версии) — Linux
Задания 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) с программами командной строки.
Следующие компоненты являются необязательными.
- Компьютер Windows с SSMS:
- SQL Server Management Studio для дополнительных действия с SSMS.
Включение агента SQL Server
Чтобы использовать агент SQL Server в Linux, нужно сначала включить его на компьютере, где уже установлен SQL Server.
- Чтобы включить агент SQL Server, сделайте следующее.
- Перезапустите SQL Server с помощью следующей команды.
Начиная с версии SQL Server 2017 с накопительным пакетом обновления 4, агент SQL Server включается в пакет mssql-server и по умолчанию отключен. Сведения о настройке агента в версиях, предшествующих накопительному пакету обновления 4, см. в статье Установка агента SQL Server в Linux.
Создание образца базы данных
Чтобы создать образец базы данных с именем SampleDB, выполните указанные ниже действия. Эта база данных используется для задания ежедневного резервного копирования.
На компьютере Linux откройте сеанс терминала bash.
Используйте sqlcmd для выполнения команды CREATE DATABASE Transact-SQL.
Убедитесь, что база данных создана, выведя список баз данных на сервере.
Создание задания с помощью Transact-SQL
Приведенные ниже шаги позволяют создать задание агента SQL Server в Linux с помощью команд Transact-SQL. Это задание выполняет ежедневное резервное копирование образца базы данных SampleDB.
Для выполнения этих команд можно использовать любой клиент T-SQL. Например, в Linux можно использовать sqlcmd или Visual Studio Code. С удаленного сервера Windows Server вы также можете выполнять запросы в 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 и подключитесь к своему экземпляру SQL Server в Linux. Дополнительные сведения см. в статье Управление SQL Server в Linux с помощью SSMS.
Убедитесь, чтобы создан образец базы данных с именем SampleDB.
Убедитесь, что агент SQL установлен и настроен правильно. Найдите знак «плюс» рядом с агентом SQL Server в обозревателе объектов. Если агент SQL Server не включен, попробуйте перезапустить службу mssql-server в Linux.
Присвойте заданию имя и создайте шаг задания.
Укажите подсистему, которую вы хотите использовать, и действие, которое должен выполнить шаг задания.
Создайте расписание задания.
Запустите ваше задание.
Next Steps
В этом руководстве вы узнали, как выполнять следующие задачи:
- Установка агента SQL Server в Linux
- Использование Transact-SQL и системных хранимых процедур для создания заданий
- Создание задания, выполняющего ежедневное резервное копирование базы данных
- Использование пользовательского интерфейса SSMS для создания заданий и управления ими
Далее вы можете изучить другие возможности для создания заданий и управления ими.
Источник
PostgreSQL
Введение
PostgreSQL (произносится «Пост-Грэс-Кью-Эл») — свободная объектно-реляционная система управления базами данных (СУБД).
Существует в реализациях для множества UNIX-подобных платформ, включая AIX, различные BSD-системы, HP-UX, IRIX, Linux , macOS, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows .
Установка
После установки
После установки проверьте версию установленного PostgreSQL
postgres (PostgreSQL) 9.2.24
Расположение файлов с настройками, например, postgresql.conf можно получить выполнив
-bash-4.2$ su — postgres -c «psql -c ‘SHOW config_file;'»
Password: config_file ————————————- /var/lib/pgsql/data/postgresql.conf (1 row)
В этом примере директория, которая содержит настройки это
Полезно изучить её содержание
total 48 drwx——. 7 postgres postgres 67 Jun 9 22:54 base drwx——. 2 postgres postgres 4096 Jun 9 23:19 global drwx——. 2 postgres postgres 18 Jun 9 13:54 pg_clog -rw——-. 1 postgres postgres 4371 Jun 10 01:23 pg_hba.conf -rw——-. 1 postgres postgres 1636 Jun 9 13:54 pg_ident.conf drwx——. 2 postgres postgres 58 Jun 10 00:00 pg_log drwx——. 4 postgres postgres 36 Jun 9 13:54 pg_multixact drwx——. 2 postgres postgres 18 Jun 9 14:14 pg_notify drwx——. 2 postgres postgres 6 Jun 9 13:54 pg_serial drwx——. 2 postgres postgres 6 Jun 9 13:54 pg_snapshots drwx——. 2 postgres postgres 25 Jun 10 02:06 pg_stat_tmp drwx——. 2 postgres postgres 18 Jun 9 13:54 pg_subtrans drwx——. 2 postgres postgres 6 Jun 9 13:54 pg_tblspc drwx——. 2 postgres postgres 6 Jun 9 13:54 pg_twophase -rw——-. 1 postgres postgres 4 Jun 9 13:54 PG_VERSION drwx——. 3 postgres postgres 60 Jun 9 13:54 pg_xlog -rw——-. 1 postgres postgres 19889 Jun 10 01:43 postgresql.conf -rw——-. 1 postgres postgres 45 Jun 9 14:14 postmaster.opts -rw——-. 1 postgres postgres 92 Jun 9 14:14 postmaster.pid
Подключение к БД
Чтобы получить доступ к базам данных можно воспользоваться стандартной консолью psql.
Если Вы хотите подключиться из bash в Windows не забудьте добавить местоположение psql.exe (у меня это C:\Program Files\PostgreSQL\12\bin) в PATH
Как это делается описано в статье PATH
psql.exe -h localhost -p 5433 -U postgres
sudo su — postgres
psql
psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1)) Type «help» for help.
Если БД на локальном хосте
psql -h 127.0.0.1 -d DATABASENAME -U DATABASEUSERNAME
Получить данные о подключении
You are connected to database «postgres» as user «postgres» via socket in «/var/run/postgresql» at port «5432».
Список существующих БД
Список уже существующих на сервере баз данных можно получить командой
Name | Owner | Encoding | Collate | Ctype | Access privileges —————+———-+———-+—————————-+—————————-+———————— urn.su | postgres | UTF8 | English_United States.1252 | English_United States.1252 | topbicyle.ru | postgres | UTF8 | English_United States.1252 | English_United States.1252 | postgres | postgres | UTF8 | English_United States.1252 | English_United States.1252 | template0 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres + | | | | | postgres=CTc/postgres test | postgres | UTF8 | English_United States.1252 | English_United States.1252 | (6 rows)
Обратите внимание на столбцы Encoding, Collate и Ctype. Знание кодировок может Вам пригодиться в будущем.
Создать базу данных
Создадим базу данных heihei_ru_db с кодировкой utf8
CREATE DATABASE «heihei_ru_db» WITH OWNER «postgres» ENCODING ‘UTF8’;
Создадим базу данных heihei с кодировкой utf8 и укажем значения для Collate, Ctype и Template
CREATE DATABASE «heihei» WITH OWNER «postgres» ENCODING
‘UTF8’ LC_COLLATE = ‘C’ LC_CTYPE = ‘C’ TEMPLATE = template0;
Проверим, что получилось
Name | Owner | Encoding | Collate | Ctype | Access privileges —————+———-+———-+—————————-+—————————-+———————— heihei | postgres | UTF8 | C | C | urn.su | postgres | UTF8 | English_United States.1252 | English_United States.1252 | topbicyle.ru | postgres | UTF8 | English_United States.1252 | English_United States.1252 | postgres | postgres | UTF8 | English_United States.1252 | English_United States.1252 | template0 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres + | | | | | postgres=CTc/postgres test | postgres | UTF8 | English_United States.1252 | English_United States.1252 | (7 rows)
Если я в bash сделаю
То получу сразу четыре доступные кодировки
C
C.UTF-8
en_US.utf8
POSIX
Но создать БД, например, с en_US.utf8 у меня не получается
CREATE DATABASE «heihei» WITH OWNER «postgres» ENCODING ‘UTF8’ LC_COLLATE = ‘en_US.utf8’ LC_CTYPE = ‘en_US.utf8’ TEMPLATE = template0;
Приводит к ошибке
ERROR: invalid locale name: «en_US.UTF-8»
Если Вы знаете как решить эту проблему — отпишитесь в комментариях к статье.
UPD: Выполнил такую же команду в Ubuntu и база успешно создана
CREATE DATABASE «new_db» WITH OWNER «postgres» ENCODING ‘UTF8’ LC_COLLATE = ‘en_US.UTF-8’ LC_CTYPE = ‘en_US.UTF-8’ TEMPLATE = template0;
Удалить базу данных
Чтобы удалить базу данных воспользуйтесь командой
DROP DATABASE db_name;
Проверить кодировки
Проверить кодировку сервера можно командой
server_encoding —————— UTF8 (1 row)
Проверить кодировку клиента
client_encoding —————— WIN1252 (1 row)
Когда вы находитесь в интерактивном режиме PostgreSQL в консоле появляется префикс
Где db это название текущей базы данных
Показать адрес текущей директории
Вернуться в PostgreSQL можно выполнив
Зайти в БД
Чтобы начать работу с базой данных нужно знать её имя, например пусть Вам нужна база даныых, которую назвали просто HeiHei_ru_DB
You are now connected to database «HeiHei_ru_DB» as user «postgres».
Если вы работаете в Linux и база данных находится на том же хосте можно выполнить
psql -h 127.0.0.1 -d DATABASENAME -U DATABASEUSERNAME
Чтобы посмотреть список таблиц введите
List of relations
Schema | Name | Type | Owner
———+———+——-+———-
public | person | table | postgres
(1 row)
Чтобы посмотреть всю таблицу person уже можно использовать стандартный
SELECT * FROM person;
Запуск скрипта из файла
Сперва проверим, что с переменными окружения всё впорядке.
Для этого введём в консоль psql.exe нажмём Enter и проверим что bash не жалуется на неизвестную команду.
Если жалуется — прочитайте мои советы в статье Системная переменная PATH
Пишем скрипт script.sql
CREATE TABLE person ( id int, first_name VARCHAR(50), last_name VARCHAR(50), gender VARCHAR(5), date_of_birth DATE )
Применим этот скрипт к базе данных HeiHei_ru_DB
У меня postgres запущен локально на порту 5433. У Вас может быть на 5432 — проверьте.
cat script.sql | psql.exe -h localhost -p5433 -U postgres HeiHei_ru_DB
Password for user postgres:
CREATE TABLE
Саме время сделать что-то более близкое к реальному скрипту
На поля таблицы нужно ввести некоторые ограничения и добавить им свойств.
CREATE TABLE booking_sites ( id BIGSERIAL NOT NULL PRIMARY KEY, company_name VARCHAR(50) NOT NULL, origin_country VARCHAR(50) NOT NULL, age VARCHAR(3) NOT NULL, date_of_birth DATE NOT NULL, website_url VARCHAR(50) );
Теперь запустим этот скрпит уже не в тестовую а в рабочую базу данных heihei (которая совпадает с названием сайта HeiHei.ru, но если написать .ru будет синтаксическая ошибка ERROR: syntax error at or near «.»)
cat booking_sites.sql | psql.exe -h localhost -p5433 -U postgres heihei
Password for user postgres:
CREATE TABLE
Содержание базы данных
В предыдущем параграфе мы создали в базе данных heihei таблицу booking_sites
Убедимся в том, что скрипт отработал удачно
Перейдём в базу данных heihei и проверим создалась ли таблица
You are now connected to database «heihei» as user «postgres».
List of relations Schema | Name | Type | Owner ———+—————+——-+———- public | booking_sites | table | postgres (1 row)
Описание таблицы
Если таблица создана какое-то время назад. Вы могли уже забыть, какие конкретно столбцы она содержит.
Для описания таблицы используется команда \d
Table «public.booking_sites» Column | Type | Collation | Nullable | Default —————-+————————+————+———-+——————————————- id | bigint | | not null | nextval(‘booking_sites_id_seq’::regclass) company_name | character varying(50) | | not null | origin_country | character varying(50) | | not null | age | character varying(3) | | not null | date_of_birth | date | | not null | website_url | character varying(50) | | | Indexes: «booking_sites_pkey» PRIMARY KEY, btree (id)
Пользователи
Получить список пользователей
List of roles Role name | Attributes | Member of ————+————————————————+———— postgres | Superuser, Create role, Create DB, Replication | <>
Изменение таблицы
Когда нужно обновить название столбца таблицы используем команду ALTER
Предположим полю website_url не хватает 50 символов. Увеличим длину до 60.
ALTER TABLE booking_sites ALTER column website_url TYPE VARCHAR( 60);
Проверим изменилась ли таблица
Table «public.booking_sites» Column | Type | Collation | Nullable | Default —————-+————————+————+———-+——————————————- id | bigint | | not null | nextval(‘booking_sites_id_seq’::regclass) company_name | character varying(50) | | not null | origin_country | character varying(50) | | not null | age | character varying(3) | | not null | date_of_birth | date | | not null | website_url | character varying( 60) | | | Indexes: «booking_sites_pkey» PRIMARY KEY, btree (id)
Импорт из .csv файла
Чтобы файл открылся желательно положить его в папку
Либо грамотно настроить разрешения — иначе будет ошибка
Источник