Экспорт результата запроса в CSV файл в SQL Server 2008

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

Ответ 1

  • Откройте SQL Server Management Studio
  • Перейдите в раздел "Инструменты" > "Параметры" > "Запрос". Результаты > SQL Server > Результаты для текста
  • В крайнем правом углу есть капля вниз с названием Формат вывода
  • Выберите "Заблокированные разделители" и нажмите "ОК"

Здесь полноэкранная версия этого изображения ниже

enter image description here

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

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

Ответ 2

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

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

  • Щелкните правой кнопкой мыши на результатах сетки и нажмите "Сохранить результаты как" и сохраните ее.

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

Удачи!

Ответ 3

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

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

Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath

Ответ 4

Если рассматриваемая база данных является локальной, следующий способ, вероятно, является наиболее надежным способом экспорта результата запроса в файл 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"

Ответ 5

Основываясь на ответе NS, у меня есть PowerShell script, который экспортируется в файл 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.

Ответ 6

Используйте 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

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

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

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

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

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

Ответ 11

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

как @Slogmeister Extraordinaire Котировка верна.

Нужно иметь 1 > Файл уже присутствует с колонками 2 > Необходимо установить Office

Ошибки, с которыми столкнулись

1

Msg 7303, уровень 16, состояние 1, строка 1 Не удается инициализировать объект источника данных поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)". "

64 бит http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_x64.exe

32 бит http://download.microsoft.com/download/f/d/8/fd8c20d8-e38a-48b6-8691-542403b91da1/AccessDatabaseEngine.exe

2

Msg 15281, уровень 16, состояние 1, строка 1 SQL Server заблокировал доступ к STARTEMENT 'OpenRowset/OpenDatasource' компонента 'Ad Hoc Distributed Queries', потому что этот компонент отключен как часть конфигурации безопасности для этого сервера. Системный администратор может включить использование "распределенных запросов" с помощью sp_configure. Для получения дополнительной информации о включении "Распределенных запросов по специальным запросам" выполните поиск "Специальные распределенные запросы" в электронной документации по SQL Server.

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 0
RECONFIGURE
GO

Ответ 12

Да, все это возможно, если у вас есть прямой доступ к серверам. Но что, если у вас есть только доступ к серверу с сервера веб-приложений? Ну, ситуация сложилась с нами задолго до того, и решение было SQL Экспорт сервера в CSV.