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



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

1075   12  

12 ответов:

  1. откройте SQL Server Management Studio
  2. перейти к сервисам > параметры > запрос Результаты > SQL Server > результаты в текст
  3. в дальнем правом углу есть капля вниз окно называется выходной формат
  4. выберите запятую и нажмите кнопку ОК

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

enter image description here

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

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

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

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

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

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

хорошее Удачи!

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

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

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

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

  1. скопировать запрос.
  2. в Обозревателе объектов щелкните правой кнопкой мыши на соответствующей базе данных.
  3. Выберите "Задачи" > > " Экспорт Данных..."
  4. настройте свой источник данных и нажмите кнопку "Далее".
  5. выберите "плоский файл" или "Microsoft Excel" как назначение.
  6. указать путь к файлу.
  7. при работе с плоским файлом, настроить по желанию. При работе с Microsoft Excel выберите " Excel 2007 "(предыдущие версии имеют ограничение строки на 64k)
  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"

использовать -ЭТО:

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.ТУЗ.Oledb для.12.0 доступного поставщика. Поставщик Jet 4.0 тоже будет работать, но он древний, поэтому я использовал его вместо этого.

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

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

основываясь на ответе 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.

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

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

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 > Один должен иметь установленный офис

ошибки перед

1

Msg 7303, Уровень 16, Состояние 1, Линия 1 Не удается инициализировать объект источника данных поставщика OLE DB " Microsoft.ТУЗ.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 заблокировал доступ к инструкции "OpenRowset / OpenDatasource "компонента" нерегламентированные распределенные запросы", так как этот компонент включен как часть настройки безопасности для этого сервера. Системный администратор может включить использование специальных распределенных запросов, с помощью процедуры sp_configure. Для получения дополнительных сведений о включении "нерегламентированных распределенных запросов" выполните поиск "нерегламентированных распределенных запросов" в электронной документации по SQL Server.

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

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

  • In Среда SSMS перейдите к Инструменты > Параметры > результаты > Результаты SQL-сервера > текст
  • изменить формат вывода на крайнем правом Табуляция С Разделителями
  • Нажмите кнопку ОК

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

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

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

Comments

    Ничего не найдено.