Как профессионал баз данных, я часто оказываюсь в ситуации, когда мне нужно представить данные из таблиц и представлений SQL Server в понятном и организованном виде. За годы работы я разработал две утилиты, которые стали незаменимыми инструментами для экономии времени: хранимую процедуру SQL Server, которая генерирует имена столбцов таблицы/представления, и макрос Excel, который раскрашивает чередующиеся наборы строк на основе значений их “бизнес-ключей”.
Генерация имен столбцов таблицы/представления
Excel – отличный инструмент для форматирования данных, извлеченных из таблиц или представлений. Однако долгое время я не знал, что SQL Server Management Studio (SMSS) имеет опцию включения заголовков столбцов при копировании данных в электронную таблицу Excel. Чтобы решить эту проблему, я создал хранимую процедуру, которая генерирует имена столбцов таблицы/представления. Эта процедура полезна, если вы не хотите всегда включать опцию “заголовки столбцов” в SMSS, и она также демонстрирует мощь схемы и метаданных SQL Server.
Начиная с SQL Server 2005, Microsoft реализовала набор представлений, соответствующих стандартам ANSI, которые предоставляют простой и интуитивно понятный обзор схемы вашей базы данных. Одно из этих представлений, INFORMATION_SCHEMA.COLUMNS, содержит список столбцов с различными свойствами для каждого столбца в пользовательских таблицах и представлениях. Путем запроса этого представления мы можем получить все имена столбцов в наших таблицах и представлениях, перечисленные в порядке объявления.
Вот пример запроса, который извлекает имена столбцов для всех таблиц и представлений:
SELECT
TABLE_NAME,
COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
ORDER BY
TABLE_NAME,
ORDINAL_POSITION
Используя этот запрос, мы можем создать хранимую процедуру, которая по имени таблицы или представления возвращает одну строку с той же схемой, что и указанный объект, где каждый столбец содержит свое собственное имя. Эту строку можно легко вставить в первую строку электронной таблицы Excel, предоставляя заголовки столбцов для данных.
Раскрашивание чередующихся наборов строк в Excel
После получения заголовков столбцов и данных в электронной таблице Excel может быть сложно ориентироваться в большом объеме данных. Чтобы облегчить группировку связанных строк для читателей, я разработал макрос Excel, который автоматически раскрашивает чередующиеся наборы строк на основе значений в указанном столбце.
Макрос работает путем сбора номера начальной строки и имени столбца от пользователя. Затем он вычисляет “используемый диапазон” активной книги и раскрашивает строки в чередующиеся цвета на основе изменяющихся значений в указанном столбце.
Вот пример использования макроса:
1. Откройте свою электронную таблицу.
2. Откройте "Инструменты|Макросы|Редактор Visual Basic".
3. Щелкните правой кнопкой мыши на "Эта книга" и выберите "Просмотр кода".
4. Скопируйте весь предоставленный код на открывшуюся страницу.
5. Закройте "Редактор Visual Basic".
6. Теперь макрос будет работать на любой странице вашей книги:
- Скопируйте свои данные на пустой лист.
- Выберите "Инструменты|Макросы".
- Выберите "ColorAlternateDataRows" из списка.
- Введите запрошенные номера строки и столбца.
Макрос будет раскрашивать строки в чередующиеся цвета на основе изменяющихся значений в указанном столбце, что облегчит визуальную группировку связанных строк.
Итог
Используя эти две утилиты, я значительно повысил эффективность представления данных из таблиц и представлений SQL Server. Всего за несколько простых шагов я могу создать хорошо отформатированную таблицу Excel с заголовками столбцов и строками, раскрашенными в разные цвета. Эти небольшие улучшения имели огромный эффект на мою продуктивность.
Обратите внимание, что для работы хранимой процедуры требуется SQL Server 2005 или выше, а макрос Excel был реализован с использованием Excel 2003 и может не совместим с другими версиями.
Автор: Дейв Зиффер
Контакт: Вы можете связаться со мной через ссылку “Контакт” на сайте моей компании www.ProjectPro.com. Вы также можете найти меня на LinkedIn. Чтобы быть в курсе моих предстоящих статей и проектов, присоединяйтесь к группе LinkedIn “Rapid Application Prototype”.