AWK и SED, обработка файла

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
кветрЯ
проходил мимо

AWK и SED, обработка файла

Непрочитанное сообщение кветрЯ » 2015-11-15 0:07:41

имеется файл blablabla.txt
в нем 84600+ строк вида:
1234567890;USS RUSSELL;РАССЕЛ;USA;8;-;-;1;19;NULL;NULL;NEVV ;GOV;;NULL;M;S;DDG 59;0;NULL
нужно превратить эту стоку в вид:
update tablename set NAMEO='USS RUSSELL', NAMEOR='РАССЕЛ', CDSTR='USA' where CDEOK='1234567890' AND NAMEO<>'' AND NAMEOR<>'';
пара вопросов:
1. правильный запрос sql?
вставить в номер 1234567890 и проверить что он пустой. если не пустой - то не писать.
2. sed и awk под винду есть? а то у меня теперь нет сервера с freebsd.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

lazhu
сержант
Сообщения: 176
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

AWK и SED, обработка файла

Непрочитанное сообщение lazhu » 2015-11-16 9:37:45

Код: Выделить всё

awk -F ';' '{print "UPDATE tablename SET NAMEO="$2,"NAMEOR="$3,"CDSTR="$4,"WHERE CDEOK="$1,"AND (NAMEO IS NULL AND NAMEOR IS NULL);"}' filename

Аватара пользователя
Neus
капитан
Сообщения: 1733
Зарегистрирован: 2008-09-08 21:59:56

AWK и SED, обработка файла

Непрочитанное сообщение Neus » 2015-11-16 18:45:47

Если не ошибаюсь, is null и ""(пустая строка) не равнозначны.
Покажи определение этой таблицы.

FiL
ст. лейтенант
Сообщения: 1357
Зарегистрирован: 2010-02-05 0:21:40

AWK и SED, обработка файла

Непрочитанное сообщение FiL » 2015-11-16 20:59:46

awk под винду есть. Например, можно из cygwin'a вытащить.
А вот что там с таблицами - это надо смотреть по факту. Например, а что если записи с CDEOK='1234567890' не существует?
А если есть запись, где NAMEO заполнен, а NAMEOR нет?

КвертЯ
проходил мимо

AWK и SED, обработка файла

Непрочитанное сообщение КвертЯ » 2015-11-20 0:05:07

Например, а что если записи с CDEOK='1234567890' не существует?
существует.
хотя есть небольшая, очень небольшая, вероятность того что записи таки нет, так как записи в базе можно только добавить, удалить невозможно. пробовали неоднократно. защита от дурака, от всего что тока можно и нельзя представить - все предусмотрено... все таки срочник может что угодно сделать... невозможно созданную запись уже удалить :( хотя некоторые очень надо бы....
А если есть запись, где NAMEO заполнен, а NAMEOR нет?
однозначно - нет.
либо есть, либо нет. в обоих полях таблицы.
Покажи определение этой таблицы.
этого поля - текстовое, около 170 символов максимум.
awk под винду есть. Например, можно из cygwin'a вытащить.
ух ты.
пошел качать.

FiL
ст. лейтенант
Сообщения: 1357
Зарегистрирован: 2010-02-05 0:21:40

AWK и SED, обработка файла

Непрочитанное сообщение FiL » 2015-11-20 0:51:11

Что-то я вдруг подумал, что условие должно быть
CDEOK='1234567890' AND NAMEO='' AND NAMEOR=''

Ну, это если я правильно понял чего делать и чего не делать.