@8x8z

Как получить значения полей из MySQL в sh — скрипте?

Часть sh - скрипт
sqlget='select id, code, name, brand  from table where id="'$id'"';
  result=$(mysql -h$host -u $dbuser -p$dbpass $db -e "$sqlget" -N -s);
      echo $result;
      code=$(echo $result | cut -d " " -f 2);
      name=$(echo $result | cut -d " " -f 3);
      brand=$(echo $result | cut -d " " -f 4);

Все работает, при условии, если в поле нет пробела. Если есть, он считается разделителем и соответственно, следующее часть строки поля попадает в другую переменную.
Вариант с массивами не проходит - это только в bash, но не в sh.
Есть еще вариант - INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ' ,'. но в этом случае нужно использовать secure_file_priv. И возникает вопрос: Как направить результат запроса не файл, а в переменную. Еще не пробовал.
Ну и самый "не красивый" вариант - выдергивать каждое поле отдельным запросом не рассматриваю. )
Какие еще есть варианты?
  • Вопрос задан
  • 628 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Добавьте неиспользуемый в строках разделитель и разбивайте по нему
select CONCAT(id,  "~", code, "~", name, "~", brand)  from table where id="'$id'"'
Ответ написан
kotomyava
@kotomyava
Системный администратор
Добавить к mysql ключик --batch или -B и разделителем колонок будет не пробел а tab.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы