Сохранить результаты как CSV * с * заголовками в SSMS

13

В SQL Server 2008 R2 при сохранении результатов в виде CSV заголовки отсутствуют. Я могу обойти это путем копирования и вставки с помощью «Копировать с заголовками», или просто захватить заголовки и вставить их в CSV и т. Д., Но есть ли лучший способ сделать это?

Кайл Брандт
источник
На самом деле, SP, который делает это, может быть идеальным.
Кайл Брандт
Скопируйте с заголовками, а затем вставьте в Excel!

Ответы:

22

В SSMS вам нужно изменить некоторые параметры:

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

Измененные настройки применяются к новым, но не существующим окнам запросов.

Мэриан
источник
10

Я вижу, что вы четко заявили, что ищете решение в SSMS, но я подумал, что предоставлю решение PowerShell, если оно поможет (SQLPS доступен из SSMS 2008 и 2008 R2).

Вы можете использовать SQLPS (или обычный PowerShell с оснасткой командлета SQL), чтобы выполнить что-то вроде этого:

Invoke-Sqlcmd -Query "sp_databases" -ServerInstance "LocalHost\R2" |
Export-Csv -Path "C:\temp\MyDatabaseSizes.csv" -NoTypeInformation

Я могу продолжать с этим примером, если вам интересно.

Аарон Нельсон - SQLvariant
источник
3

Если вам нравится подход сценария PowerShell, у меня есть сценарий, который экспортирует в CSV из SSMS через PowerShell . Мне нравится, что до сих пор у вас может быть динамический сценарий SQL, черт возьми, вы можете выбрать любой текст, и SSMS передает его сценарию в качестве аргумента.

Единственным недостатком является то, что я не нашел умный способ пройти через соединение текущего окна. Мой текущий обходной путь - настроить разные инструменты, которые различаются только по строкам подключения, например, PROD_DW, PROD_DB, TEST_DW ...

billinkc
источник
1

Вы можете сделать объединение всех соединений, чтобы явно добавить заголовки столбцов в виде единого выбора строки, объединенного с реальными строками, например:

SELECT 'col1' AS col1... 
UNION ALL 
SELECT T.col1... 
FROM TABLE T

Самая большая проблема при таком подходе - принудительное приведение к символьному типу данных во втором выборе.

Филипп Сенн
источник
-1

SSMS не является инструментом экспорта данных. Используйте мастер импорта / экспорта или BCP, оба из которых были разработаны как инструменты экспорта данных и будут делать то, что вы хотите сделать.

mrdenny
источник
Если бы это было строго верно, у него не должно быть никакой опции экспорта вообще. Для любого программного обеспечения, если вы добавите функцию, сделайте так, чтобы она работала правильно. По крайней мере SSMS 2008R2 не проходит этот тест, когда дело доходит до экспорта. Кроме того, SSMS действительно может удовлетворить потребности OP.
Эрик Дж.
2
SSMS - это специальный инструмент для экспорта данных. Если вам нужно одноразовое извлечение данных, скажем, в Excel, то SSMS - самый быстрый и простой инструмент. За время, необходимое для запуска мастера экспорта, вы можете выполнить запрос и сохранить результаты.
Гринстоун Уолкер,