Сохранение результатов с заголовками в Sql Server Management Studio

183

Я использую SQL Server Management Studio.

Я хочу сохранить результаты запроса в файл Excel.

Я выбираю «сохранить как» и затем сохраняю в файл CSV, который я могу открыть в Excel. Все хорошо, за исключением того, что мне не хватает заголовков столбцов, есть идеи, как их экспортировать?

dublintech
источник

Ответы:

274

Tools> Options> Query Results> SQL Server> Results to Text (or Grid if you want)>Include columns headers in the result set

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

На панели инструментов редактора SQL вы можете выбрать сохранить в файл без перезагрузки SSMS

Диего
источник
35
+1, протестировал это, и оно работает: Инструменты -> Параметры -> Результаты запроса -> SQL Server -> Результаты в таблицу, затем установите флажок «Включить заголовки столбцов при копировании или сохранении результатов».
Джефф Огата
46
Это работает для SSMS 2012 - вам нужно перезапустить SSMS, чтобы настройки вступили в силу.
SliverNinja - MSFT
17
Для подтверждения вам определенно необходимо закрыть и снова открыть SSMS для применения этой опции.
Кристофер Кинг
8
Как сказал Кристофер, вам НЕОБХОДИМО перезапустить SSMS, чтобы изменения работали.
Роб
8
Для SSMS 2016 вам также необходимо перезапустить его, чтобы эти изменения вступили в силу.
Крис Хаас
37

Попробуйте Мастер экспорта. В этом примере я выбираю всю таблицу, но вы также можете легко указать запрос:

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

(Вы также можете указать запрос здесь)

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Джон Дьюи
источник
4
Спасибо за это. Но это для таблиц. Мой вопрос был для запроса.
Дублинтех
1
Вы также можете указать запрос на четвертом шаге - «Указать копию таблицы или запрос».
Джон Дьюи
Я испробовал все другие подходы, и это единственный способ, который работал для моих смешанных типов данных.
DOK
3
Хотя это работает, это очень больно и отнимает много времени. SQL Server и Excel являются продуктами MS, удивительно, что в 2013 году не было простой кнопки экспорта!
Андре
34

Другой возможностью является использование буфера обмена для копирования и вставки результатов непосредственно в Excel. Просто будьте осторожны со столбцами общего типа Excel, так как иногда они могут привести к непредсказуемым результатам, в зависимости от ваших данных. CTL-Aв любом месте сетки результатов, а затем щелкните правой кнопкой мыши:

введите описание изображения здесь

Если у вас возникли проблемы с общим форматом Excel, выполняющим нежелательные преобразования, выберите пустые столбцы в Excel перед вставкой и измените формат на «текст».

Джон Дьюи
источник
Это здорово, кроме форматирования Excel. Числа с начальными нулями (например, номера мобильных телефонов) сбрасывают нули в Excel. Существуют и другие проблемы с форматированием, которые можно подождать, используйте на свой страх и риск. Спасибо Microsoft!
e_i_pi
12

По крайней мере, в SQL Server 2012 вы можете щелкнуть правой кнопкой мыши в окне запроса и выбрать Параметры запроса. Оттуда вы можете выбрать «Включить заголовки» для сетки и / или текста и настроить «Сохранить как» так, как вам нужно, без перезапуска SSMS.

Вам все еще нужно изменить его в Сервис-> Параметры в строке меню, чтобы новые окна запросов использовали эти настройки по умолчанию.

Майкл Маккормик
источник
7

Та же проблема существует в Visual Studio, вот как это исправить:

Перейти к:

Tools > Options > SQL Server Tools > Transact-SQL Editor > Query Results > Results To Grid

Теперь установите флажок в true: «Включить заголовки столбцов при копировании или сохранении результатов»

Николас Петерсен
источник
6

Выберите результаты, нажав в верхнем левом углу, щелкните правой кнопкой мыши и выберите «Копировать с заголовками». Вставить в Excel. Готово!

Крис Димитриу
источник
4

Настройки, которые рекомендуется изменить в принятом ответе @ Diego, могут быть полезны, если вы хотите установить эту опцию постоянно для всех будущих сеансов запросов, которые вы открываете в SQL Server Management Studio (SSMS). Обычно это не тот случай. Кроме того, изменение этого параметра требует перезапуска приложения SQL Server Management Studio (SSMS). Это опять-таки «не очень хороший» опыт, если у вас много несохраненных окон сеанса открытых запросов и вы находитесь в процессе отладки.

SQL Server предоставляет очень удобную возможность менять его для каждой сессии, что очень быстро, удобно и удобно . Я подробно описываю шаги ниже, используя окно параметров запроса:

  1. Щелкните правой кнопкой мыши в окне редактора запросов> Нажмите Query Options...в нижней части контекстного меню, как показано ниже:

введите описание изображения здесь

  1. Выберите Results> Gridв левой навигационной панели. Установите Include column headers when copying or saving the resultsфлажок в правой панели, как показано ниже:

введите описание изображения здесь

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

RBT
источник
2

Попал сюда, когда искал способ заставить SSMS правильно экранировать разделители CSV при экспорте результатов.

Угадай, что? - это на самом деле вариант, и по умолчанию он не отмечен . Таким образом, по умолчанию вы получаете испорченные файлы CSV (и, возможно, даже не понимаете этого, особенно если объем экспорта большой, а данные обычно не имеют запятых), - и вам нужно установить флажок, чтобы экспортировать CSV. правильно!

Мне кажется, это монументально глупый выбор дизайна и метафора подходящего подхода Microsoft к программному обеспечению в целом («нарушенный по умолчанию, требуются бессмысленные ритуальные действия для работы тривиальной функциональности»).

Но я с радостью пожертвую 100 долларов на благотворительность по выбору респондента, если кто-то может дать мне одну действительную реальную причину существования этого варианта (т. Е. Фактический сценарий, где он был полезен).

Daibhi O Domhnaill
источник
2

В SQL Server 2014 Management Studio параметр имеет следующий вид:

Инструменты> Параметры> Результаты запроса> SQL Server> Результаты в текст> Включить заголовки столбцов в набор результатов.

Джейсон Льюис
источник
0

Я тоже сталкиваюсь с той же проблемой. Когда я использовал правой кнопкой мыши в окне запроса и выберите Параметры запроса. Но строки заголовка не отображаются в выходном файле CSV.

Затем я выхожу из системы, снова захожу и запускаю скрипт. Тогда это сработало.

Hardik Rawal
источник
Вы пытались изменить Include column headers when copying or saving the resultsопцию? Эта опция отображается, когда вы выбираете Results> Gridв левой навигационной панели Query Optionsокна.
RBT