vit_r: default (vit_r)
[personal profile] vit_r

Про высокие и низкие технологии



Коллега спрашивает:

- А правда, вот такого не может быть?
- Несомненно, - отвечаю я.
- Точно?
- Точно-точно.
- А как же у меня получилось?

Грубо говоря, надо сравнить строки «A» со строками «B» в таблице определённого вида. По его словам получается, что происходят какие-то магические вещи.

Похожу я к нему, пялюсь в монитор, и предстаёт перед моим взором какой-то монстр... с OUTER JOIN, с кучей каких-то заумных условий, с хитрым сплетением колонок и ещё чем-то страшным, что ни осознать, ни оценить я не в состоянии.

- Какой номер таблицы? - спрашиваю, возвращаюсь к своему компу и зову его.

Дальше по шагам

  1. Ctrl-2 и переход на второй воркспейс. (Менеджер воркспейсов у M$ дурацкий, зато бесплатный и ставится без административных прав.)
  2. Клик мышкой на закладку с базами в открытом SQL-туле, клик на базу и ввод числа в строку поиска.
  3. Двойной клик на имя найденной таблицы.
  4. Над раскрывшейся таблицей клик на кнопку «конвертировать в SQL».
  5. F5 после того, как открылась закладка с запросом. (То есть, запуск SQL.)
  6. Клик мышкой в первую строку таблицы, появившейся в нижней части окна. Shift-Ctrl со стрелочкой вправо. (То есть, Select первой строки от начала и до конца.)
  7. Ctrl-C и Enter, чтобы скопировать первую строку с заголовками, перевернув строки в столбцы.
  8. Двойной клик на Excel файл на рабочем столе.
  9. Клик в него и Ctrl-V. В результате два столбца: заголовки и значения.
  10. Select столбца с заголовками. Ctrl-C.
  11. Ctrl-1 и переход на первый воркспейс.
  12. Клик в открытый текстовый редактор и Ctrl-N, чтобы открыть новый файл. (Обычно пишу в уже открытый лог, но это чужой текст, который мне болше не нужен.)
  13. Ctrl-V. Select колонки имён столбцов. Клик на кнопку сортировки. Enter.
  14. Печатаю «SELECT» вверху, следующей строкой имя столбца с «A/B».
  15. Select для столбцов ниже. Три раза Tab, чтобы отодвинуть вправо.
  16. Select трёх табов. Ctrl-C. F8, на который переведён Replace. Tab, и Ctrl-V в поле для того, на что заменять. Запятая перед предпоследним табом и Ctrl-A
    В результате, имена столбцов отсортированы и аккуратно стоят отступом, разделённые запятыми.
  17. На следующей строке печатаю «FROM»
  18. Далше, Ctrl-2, Select имени базы в SQL-туле, Ctrl-C, Ctrl-1 обратно, клик в текстовый редактор и Ctrl-V.
  19. Следующей строкой печатаю «ORDER BY».
  20. Копирую ниже имена столбцов таблицы, которые подходят для сортировки.
  21. Самым нижним добавляю тот столбец, который «A/B».
  22. Select всего полученного текста. Ctrl-C.
  23. Ctrl-2. Клик в SQL-тул. Select того, что там стоит. Del. Ctrl-V.
    Итого в туле стоит готовый запрос.
  24. F5, чтобы запустить SQL.
  25. Смотрю таблицу внизу, переставляю пару столбцов в ORDER BY. F5.
  26. Внизу красивая табличка, с отсортированными строками, первым столбцом идёт «A - B - A - B - A - B».
  27. Select первых двух строк. Ctrl-C. Enter. (Диалог при копировании надоел, но он не убирается.)
  28. Тыкаю в раскрытый Excel, в верхнюю клетку второго столбца. Ctrl-V.
  29. Первый столбец таблицы сверху до низу забит тупой формулой, которая говорит «OK» если значения в «A» и «B» совпадают, и «ERR», если нет.
  30. Показываю коллеге результат и говорю:
    - Ну вот. У тебя значения в столбцах «_before» и «_after» перепутаны. Числа в «A» и «B» одинаковые, только столбцы сместились.


Это только выглядит длинно. На самом деле, только пальцы по клавиатуре бегают, а ответ был готов, ещё до того, как успеешь дочитать до середины. (Хотя некоторые операции в этих дурацких Виндах я бы предпочёл вывести на педали.)

Коллега смотрит на результат. Конечно, не так интересно, как строить хитрые запросы и выдвигать смелые теории, но он однозначен.

Он бурчит что-то себе под нос. Возвращается на свое место. Смотрит на меня...

А теперь догадайтесь, что он произносит?


- Никогда бы не подумал, что ты используешь Excel.

Чёрт побери, никаких административных прав, голимые Винды и виндусятные тулы вместо нормальных средств разработки. Ни командной строки, ни XEmacs. Даже IExplorer в качестве браузера.

А он, видите-ли удивлён, что я как последний бухгалтер занимаюсь копи-пейстом и сравниваю дебет с кредитом вместо высокоинтеллектуального написания чистых и возвышенных SQL-запросов.

Date: 2014-10-23 06:31 am (UTC)
From: [identity profile] yajohn.livejournal.com
А как же *с придыханием* Биг Дата? Тоже через эксл?

Date: 2014-10-23 07:41 am (UTC)
From: [identity profile] vit-r.livejournal.com
Если по логам надо сравнивать количество строк в дюжине таблиц, то проще через. Хотя, можно использовать SQL как калькулятор.

Date: 2014-10-23 06:43 am (UTC)
From: [identity profile] zorag-ringael.livejournal.com
> - Никогда бы не подумал, что ты используешь Excel.

Просто защитная реакция.
Не было бы Excel'a нашлась бы какая-то еще "пылинка".

Date: 2014-10-23 09:07 am (UTC)
From: [identity profile] vit-r.livejournal.com
Не-а. Человек на самом деле живёт в Vim.

Date: 2014-10-23 10:22 am (UTC)
From: [identity profile] zorag-ringael.livejournal.com
Ну, в любом случае, то что дает быстро и просто результат -- оптимальное/самое лучшее решение.

А так хоть notepad :)

Насчет Экселя -- там на Хабре мелькали статьи, как российские военные имея только Эксель вполне себе софт писали и для своих задач и для военных (через Visual Basic в основном)
Я в том смысле, что не такой уж он дубовый и примитивный.

В принципе, в голой винде тоже есть инструменты для создания скриптов - тот же VB например.

Date: 2014-10-23 12:05 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Новый Эксель без проблем пережёвывает миллион строк в таблице. А на Бейсике писать - я ещё не опустился до такого дна.

Date: 2014-10-23 12:50 pm (UTC)
From: [identity profile] zorag-ringael.livejournal.com
Ну там не обычный бейсик, а улучшенный, с ООП и разными дополнительными плюшками.

И почему дна? :3 Джоэл Сполски вон считает, что вполне себе мощный язык для своих целей. Даже пишет, что другие современные языки не сильно далеко ушли от него

http://russian.joelonsoftware.com/Articles/HowMicrosoftLosttheWaronA.html

В любом случае, лучше чем .bat-ники для скриптинга.

Собственно, смотреть на VB свысока тоже самое, что смотреть свысока на Excel.

Date: 2014-10-23 02:26 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Excel используют люди в финансах. Поэтому критически важно, чтобы он был удобный и интегрированный.

Бейсик - это просто ещё один язык. Отнюдь не лучший. И очень неудобный. Высказывания популярных гуру оставим на их совести.

Date: 2014-10-23 03:58 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
На VBA при необходимости можно написать хоть файловый менеджер.

Или, по заветам Луговского - на VBA - форт, на форте - тупой лисп, на тупом лиспе - нормальный лисп, а на нем уже все остальное.

Но скорее всего дело в том, что это у военных задачи дубовые и примитивные.

Date: 2014-10-23 10:26 am (UTC)
From: [identity profile] zorag-ringael.livejournal.com
В принципе, gVim наверное поставится без админских прав.

Вообще такие, изуверские ограничения для разработчиков -- это верх маразма, но для больших компаний - норма.

Date: 2014-10-23 11:28 am (UTC)
From: [identity profile] vit-r.livejournal.com
"Можно" имеет два значения: как возможность и как разрешение.

В первом смысле я много чего могу сделать и из-под обычного пользователя.

Date: 2014-10-24 07:24 am (UTC)
From: [identity profile] alexott.livejournal.com
Emacs - точно ставится, поскольку это просто архив :-)

Date: 2014-10-24 07:28 am (UTC)
From: [identity profile] vit-r.livejournal.com
Да всё ставится, тем более есть виртуальная машина.

Но есть различия между возможностями и разрешениями. Хотя, всё больше подумываю, не послать ли их нафиг.

Date: 2014-10-24 11:16 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
Виртуальная машина, в которой вы запустите ОС Emacs/Linux. В ней, кстати, браузер появился.

Date: 2014-10-23 08:05 am (UTC)
From: [identity profile] metaclass.livejournal.com
Я хотел для таких операций встроить diff с подсветкой себе в клиент для БД.
В итоге ограничился тем, что по горячей клавише делаю экспорт результатов запросов в виде текстовой таблички или CSV и запускаю для их сравнения внешний тул (Araxis Merge).

Date: 2014-10-23 09:06 am (UTC)
From: [identity profile] vit-r.livejournal.com
Если бы я мог устанавливать софт, я бы написал программульку для этого дела, которая сама пишет всё в лог, сама посылает запросы и сама сравнивает.

Но это не окупится, потому что мы варяги: прибежали, решили проблемы, убежали. Хотя, по мотивам я бы кое-что интересное напрограммировал. Но опять же, не известно, будут ли ещё проекты такого плана.

Date: 2014-10-23 09:19 am (UTC)
From: [identity profile] cross-join.livejournal.com
По шагам не осилил :)
Я бы, наверное, просто переписал запрос в консоли.

Date: 2014-10-23 11:24 am (UTC)
From: [identity profile] vit-r.livejournal.com
Переписывать - это нужно думать. Тут просто copy-paste с абсолютно выключенной головой.

Да и не напишешь так просто, потому что неизвестно, где именно подлянка попалась и что ключи сортировки, а что просто мусор.

Profile

vit_r: default (Default)
vit_r

June 2025

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 3rd, 2025 01:49 pm
Powered by Dreamwidth Studios