Как выполнить SQL из bash script?

У меня есть SQL-скрипты, которые я пытаюсь автоматизировать. Раньше я использовал SQL * Plus и называл двоичный файл sqlplus вручную, из bash script.

Однако я пытаюсь выяснить, есть ли способ подключиться к БД и вызвать script изнутри bash script..., чтобы я мог вставить date и чтобы запросы выполнялись относительно определенного количества дней в прошлом.

Ответы

Ответ 1

Я немного смущен. Вы должны иметь возможность вызывать sqlplus из bash script. Это может быть то, что вы делали с первым выражением

Попробуйте выполнить следующее в bash script:

#!/bin/bash          
echo Start Executing SQL commands
sqlplus <user>/<password> @file-with-sql-1.sql
sqlplus <user>/<password> @file-with-sql-2.sql

Если вы хотите передавать данные в свои скрипты, вы можете сделать это через SQLPlus, передав аргументы в script:

Содержимое file-with-sql-1.sql

 select * from users where username='&1';

Затем измените bash script на вызов sqlplus, проходящий в значении

#!/bin/bash

MY_USER=bob
sqlplus <user>/<password> @file-with-sql-1.sql $MY_USER

Ответ 2

Вы также можете использовать "здесь документ", чтобы сделать то же самое:

VARIABLE=SOMEVALUE

sqlplus connectioninfo << HERE
start file1.sql
start file2.sql $VARIABLE
quit
HERE

Ответ 3

Возможно, вы можете подключить SQL-запрос к sqlplus. Он работает для mysql:

echo "SELECT * FROM table" | mysql --user=username database

Ответ 4

Вот простой способ запуска MySQL-запросов в оболочке bash

mysql -u [database_username] -p [database_password] -D [database_name] -e "SELECT * FROM [table_name]"

Ответ 5

Поскольку Bash не имеет встроенного подключения к базе данных sql... вам нужно будет использовать какой-то сторонний инструмент.