Причина, по которой ваша попытка не сработала, заключалась в том, что <
ожидает имя файла, и вы передали ему строку.Вам нужно будет сделать что-то вроде
echo "YOURQUERYSTRINGHERE">tmpfile
mysql --host=localhost --user=user --password=password dbname <tmpfile
предложение Кена о
mysql --host=localhost --user=user --password=password -e "QUERY" dbname
может сработать, но если вы попытаетесь использовать переменные bash в своем запросе, вы можете нарушить расширение параметров.Например,
QUERY="select * from $MYTABLE WHERE name=\"silly@place.com\";"
mysql --host=localhost --user=user --password=password -e "$QUERY" mydbname
может не соответствовать вашим ожиданиям.Одним из вариантов является использование
echo "$QUERY"|mysql --host=localhost --user=user --password=password mydbname
, которое работает, если строка запроса содержит соответствующие кавычки.Другой вариант - это документ «здесь», предложенный Dogbane.