Как выполнить 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... вам нужно будет использовать какой-то сторонний инструмент.