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.

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
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

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

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

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

FiL
ст. лейтенант
Сообщения: 1327
Зарегистрирован: 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
ст. лейтенант
Сообщения: 1327
Зарегистрирован: 2010-02-05 0:21:40

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

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

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

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

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

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

Непрочитанное сообщение КвертЯ » 2015-11-21 23:53:27

а я разве не так написал?



Вернуться в «SHELL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость