Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: sql и имя linux машины  (Прочитано 12167 раз)
0 Пользователей и 1 Гость смотрят эту тему.
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« : 28-05-2007 12:14 » 

Всем привет, подскажите, как мне в sql запрос вставить имя linux машины? т.е. запускается скрипт который берет имя linux машины из переменно hostname и вставляет в sql запрос, это необходимо для того что бы скрипт правил имеющиееся таблицы на предмет правильно заполненного поля HOST_NAME.

Например:

SQL>update host_details set host_name=hostname

где, hostname в коммандной строке возвращяет имя машины на который был запущен.

Спасибо!
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 28-05-2007 16:01 » 

McZim, не понятно, какими средствами ты хочешь получать имя хоста: SQL, оболочки или еще  чем?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #2 : 28-05-2007 19:49 » 

я могу получать имя машины в коммнадной строке, выполнив

#hostname

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

блин я сам запутался, я то понимаю что мне нужно но вот донести не могу.... Жаль ок разбирусь выложу результат!
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 28-05-2007 20:47 » 

Примерно так:
Код: (Bash)
#!/bin/sh

echo "UPDATE host_details SET host_name = $HOSTNAME" | mysql .....

Если такая переменная окружения отсутствует, то можно ее сделать самому в скрипте:

Код: (Bash)
HOSTNAME=`hostname`
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #4 : 28-05-2007 21:46 » 

угу что то подобное я предпологал, маленькая оговорочка у меня Oracle.
думаю как-то так:

Код:
#!/bin/sh

sqlplus system/manager as sysdba <<EOF
update host_details set host_name='$hostname';
commit;
EOF
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 29-05-2007 05:56 » 

Я вызываю так:
Код: (Bash)
sqlplus -S ***/***@*** >$LOGFILE 2>&1 <<EOF

EOF
Можно и лог сохранить и лабуду с копирайтами убрать.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #6 : 29-05-2007 10:49 » 

да все работает, спасибо. Есть еще один вопросик. Я подключаюсь по ssh с одной машины на вторую (здесь стоит база oracle). так вот, там где стоит база локаль KOI8-r а на машине с которой подключаюсь стоит локаль UTF-8 соответсвенно я получаю кракозяблы вместо русских букв в консоли, можно ли какнить в параметрах подключения указать локаль? ssh или sqlplus???

тут не нашел:

end-maximaf:~# ssh --help
usage: ssh [-1246AaCfgKkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-i identity_file] [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-w tunnel:tunnel] [user@]hostname [command]
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 29-05-2007 14:52 » 

Для sqlplus:

Код: (Bash)
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
export NLS_LANG

Только подбери кодировку под utf-8 - я такой не пользуюсь.
Мне помогает. У меня локаль KOI8-R, а отчеты должны быть в CP1251.

Другой вариант - перекодировать туда-обратно с помощью iconv.

Насчет ssh - не разбирался. Я пользуюсь виндовым PuTTY, а он позволяет менять кодировки.
« Последнее редактирование: 29-05-2007 14:54 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #8 : 31-05-2007 11:27 » 

не мне не кодировка фалов нужна, а вот например я делаю:

sqlplus /nolog

SQL>connect system/manager as sysdba
SQL>здесь какой нить запрос с ошибкой

SQL>а в ответ получаю Не понялНе понялНе понял вместо ошибки!!!

или ты как раз об этом и говорил???
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 31-05-2007 14:06 » 

McZim, почитай тут http://www.sql.ru/faq/faq_topic.aspx?fid=217
там правда виндовые настройки
« Последнее редактирование: 31-05-2007 14:13 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines