Published on

November 15, 2008

Повышение эффективности с помощью SQL Server и Excel

Как профессионал баз данных, я часто оказываюсь в ситуации, когда мне нужно представить данные из таблиц и представлений 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”.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.