как использовать MySQL поля в оболочке - PullRequest
1 голос
/ 13 марта 2011

У меня есть таблица, и мне нужен доступ к ней из сценария оболочки и выполните следующие действия.

> USERNAME="usr" PASSWORD="pwd"
> DBNAME="mydb"
> 
> mysql -u$USERNAME -p$PASSWORD $DBNAME<<EOF 
> selectfield1,field2,field3,field4 from table;
> EOF

дает мне записи. Но мне нужно обрабатывать каждое поле с помощью обычных команд linux-

например;

> mysql -u$USERNAME -p$PASSWORD $DBNAME<<EOF
>  select field1,field2,field3,field4 from table;
> EOF 
> scp field1@field2: field3@field4:/tmp && rm -rf field2

что-то в этом роде - основная вещь заключается в использовании записей базы данных для вызова команд linux на локальном компьютере.

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Спасибо за ответы и предложения - Но я нашел следующий метод намного проще. Безопасно ли использовать этот метод?

variable=`mysql -u$USERNAME -p$PASSWORD $DBNAME <<EOF  
 select name,pass,email,flag from UserRemap where flag="Y" ;  
EOF` 

echo $variable 

name=`echo $variable | cut -d' ' -f5`

pass=`echo $variable | cut -d' ' -f6` 

mail=`echo $variable | cut -d' ' -f7`
1 голос
/ 13 марта 2011

Один из подходов состоит в том, чтобы использовать эту конструкцию (попробуйте, синтаксис немного странный):

cat << EOF | while read a b c ; do echo "a:$a b:$b c:$c" ; done
one two three
EOF

[Редактировать: очевидно, заменить cat и one two three на ваши фактические данные sql]

Вам необходимо убедиться, что mysql не печатает ничего, кроме результата (без логотипа / уведомления об авторских правах / заголовка информации о версии и т. Д.) - я считаю, что для этого есть ключи командной строки.

Вы также столкнетесь с проблемами, если в возвращаемых данных есть пробелы или они разделены чем-то другим, а не только пробелами.Для таких случаев вы можете просто установить $IFS в то, что никогда не происходит в ваших столбцах (возможно, |), и сделать так, чтобы ваш запрос выводил этот символ между двумя полями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...