Запрос к базе данных MySQL из оболочки - PullRequest
0 голосов
/ 29 сентября 2011

Мне нужно сделать несколько запросов к базе данных MySql. Мой вопрос следующий:

  1. Нужно ли добавить в файл следующее, а затем выполнить файл:

echo "Check"
mysql -h 192.168.100.1 -t -u umane -pass имя_папки echo "Check"
mysql -h 192.168.100.1 -t -u umane -pass tablename echo "Check"
mysql -h 192.168.100.1 -t -u umane -pass имя_папки echo "Проверить"
mysql -h 192.168.100.1 -t -u umane -pass имя_папки < query4.sql

  1. Или я создаю один файл "query.sql", который содержит все sql-запросы. Если да, могу ли я каким-либо образом повторить "Проверить" как-то?

Ответы [ 4 ]

1 голос
/ 29 сентября 2011

Поместите все ваши операторы sql в source.sql, и вы перенаправите вывод в output.txt

mysql -t -uuserid -ppassword -hhostname < source.sql > output.txt
1 голос
/ 29 сентября 2011

Вы можете создать один файл sql, а затем добавить несколько операторов SELECT, например,

// Does not print anyting
CREATE TABLE test (col1 int, col2 varchar(2)); 
// Prints a non-existing table with 1 column and 1 row
SELECT "CHECK 1" AS "Test result"; 
// This does prints some output
DESCRIBE test;
// Prints the check 'table' again
SELECT "CHECK 2" AS "Test result";

Результат выглядит как

my@server:~$ mysql -t -u root databasename < sqltest 
+-------------+
| Test result |
+-------------+
| CHECK 1     |
+-------------+
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| col1  | int(11)    | YES  |     | NULL    |       |
| col2  | varchar(2) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
+-------------+
| Test result |
+-------------+
| CHECK 2     |
+-------------+

- отредактируйте, да, так же, как предложение Димитра

1 голос
/ 29 сентября 2011
username="my_sql username"
password="my_sql password"
result=`mysql -h 192.168.100.1  --port=$port -u $username --password=$password -e 'select * from database.table_name'`

echo $result
0 голосов
/ 29 сентября 2011

Вы можете добавить текст (и метку времени) в SQL-коде:

% mysql -NBe "select now(); select 'check'; select now();select 'check'"
2011-09-29 14:46:15
check
2011-09-29 14:46:15
check

Таким образом, ваш отдельный файл SQL будет выглядеть так:

--- queries from sql1...
SELECT NOW()
SELECT 'check';
-- queries from sql2...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...