Экспорт результата запроса в файл .csv в SQL Server 2008 - PullRequest
127 голосов
/ 03 июля 2010

Как экспортировать результат запроса в файл .csv в SQL Server 2008?

Ответы [ 12 ]

156 голосов
/ 04 июля 2010
  1. Открыть SQL Server Management Studio
  2. Перейдите в Инструменты> Параметры> Запрос Результаты> SQL Server> Результаты в текст
  3. В крайнем правом углу есть падение вниз называется «Формат вывода»
  4. Выберите Запятую с разделителями и нажмите OK

Вот полноэкранная версия этого изображения, ниже

enter image description here

Это покажет результаты вашего запроса в виде текста с разделителями-запятыми.

Чтобы сохранить результаты запроса в файл: Ctrl + Shift + F

127 голосов
/ 17 мая 2012

Я знаю, что это немного устарело, но вот гораздо более простой способ ...

  1. Запустите ваш запрос с настройками по умолчанию (результаты помещаются в сетку, если ваши не в сетке, см. Ниже)

  2. Щелкните правой кнопкой мыши результаты сетки и выберите «Сохранить результаты как» и сохраните ее.

Если ваши результаты не в сеточном формате, щелкните правой кнопкой мыши там, где вы пишете запрос, наведите курсор «Результаты в» и нажмите «Результаты в таблицу»

Удачи!

41 голосов
/ 18 октября 2012

Вы можете использовать PowerShell

$AttachmentPath = "CV File location"
$QueryFmt= "Query"

Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath
14 голосов
/ 24 июля 2015

Если рассматриваемая база данных является локальной, следующий способ, вероятно, является наиболее надежным способом экспорта результата запроса в файл CSV (т. Е. Предоставляя вам максимальный контроль).

  1. Скопируйте запрос.
  2. В обозревателе объектов щелкните правой кнопкой мыши соответствующую базу данных.
  3. Выберите «Задачи» >> «Экспорт данных ...»
  4. Настройте источник данных и нажмите «Далее».
  5. Выберите «Плоский файл» или «Microsoft Excel» в качестве места назначения.
  6. Укажите путь к файлу.
  7. Если вы работаете с плоским файлом, настройте его по своему усмотрению. При работе с Microsoft Excel выберите «Excel 2007» (в предыдущих версиях ограничение строки составляло 64 КБ)
  8. Выберите «Написать запрос, чтобы указать данные для передачи»
  9. Вставить запрос из шага 1.
  10. Нажмите Далее >> Просмотреть сопоставления >> Нажмите Далее >> выберите «Выполнить немедленно» >> Дважды нажмите «Готово».

После исчерпывающего прохождения этого процесса я обнаружил, что лучшим вариантом будет следующее

Сценарий PowerShell

$dbname = "**YOUR_DB_NAME_WITHOUT_STARS**"
$AttachmentPath = "c:\\export.csv"
$QueryFmt= @"
**YOUR_QUERY_WITHOUT_STARS**
"@

Invoke-Sqlcmd   -ServerInstance **SERVER_NAME_WITHOUT_STARS** -Database  $dbname -Query $QueryFmt | Export-CSV $AttachmentPath -NoTypeInformation

Запуск PowerShell от имени администратора

& "c:\path_to_your_ps1_file.ps1"
6 голосов
/ 22 января 2014

Использование T-SQL :

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName

Но есть несколько предостережений:

  1. Вам необходимо иметь MicrosoftДоступен провайдер .ACE.OLEDB.12.0.Поставщик Jet 4.0 тоже будет работать, но он древний, поэтому я использовал этот.

  2. Файл .CSV уже должен существовать.Если вы используете заголовки (HDR=YES), убедитесь, что первая строка файла .CSV представляет собой список всех полей с разделителями.

5 голосов
/ 11 мая 2016

MS Excel -> Данные -> Новый запрос -> Из базы данных .. следуйте инструкциям

5 голосов
/ 25 июля 2013

Основываясь на ответе N.S, у меня есть скрипт PowerShell, который экспортирует в файл CSV с кавычками вокруг поля и запятой, и он пропускает информацию заголовка в файле.

add-pssnapin sqlserverprovidersnapin100
add-pssnapin sqlservercmdletsnapin100

$qry = @"
Select
  *
From
 tablename
"@

Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $qry | convertto-CSV -notype | select -skip 1  > "full path and filename.csv"

Первые две строки позволяют использовать команду Invoke-SqlCmd let-*.

3 голосов
/ 27 ноября 2013

Использование собственного метода SQL Server Management Studio для экспорта в CSV (как предложено @ 8kb) не работает, если ваши значения содержат запятые, поскольку SSMS не заключает значения в двойные кавычки. Более надежный способ, который сработал для меня, это просто скопировать результаты (щелкните внутри сетки, а затем нажмите CTRL-A, CTRL-C) и вставьте их в Excel. Затем сохраните как файл CSV из Excel.

2 голосов
/ 17 марта 2017

Если вы не хотите использовать Powershell, этот ответ - вариант отличного ответа 8kb.Разница лишь в том, что вместо выбора CSV в качестве выходного формата выберите Tab с разделителями.Таким образом, если в ваших данных есть запятые, в Excel они не будут пропущены.Кроме того, если у вас установлен разделитель Excel по умолчанию на вкладки, вы можете просто скопировать все результаты запроса SSMS (CTRL-A, CTRL-C) и вставить в Excel (нет необходимости сохранять в файл и импортировать в Excel).):

  • В SSMS Перейдите в Инструменты> Параметры> Результаты запроса> SQL Server> Результаты в текст
  • Изменить формат вывода в крайнем правом углу на Разделитель табуляции
  • Нажмите OK

Теперь вы можете выполнить свой запрос, затем нажмите CTRL-A, чтобы выбрать все результаты, затем CTRL-C, чтобы скопировать в буфер обмена, затем переключитесь в Excel 2013 (может работать и в 2007 году, не уверен) и вставьте - при условии, что в качестве разделителя Excel по умолчанию установлено значение tab.

Изображение экрана параметров запроса SSMS

2 голосов
/ 22 апреля 2012

Вы можете использовать QueryToDoc (http://www.querytodoc.com).. Он позволяет вам написать запрос к базе данных SQL и экспортировать результаты - после выбора разделителя - в Excel, Word, HTML или CSV

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...