12 ответов:
- откройте SQL Server Management Studio
- перейти к сервисам > параметры > запрос Результаты > SQL Server > результаты в текст
- в дальнем правом углу есть капля вниз окно называется выходной формат
- выберите запятую и нажмите кнопку ОК
вот полноэкранная версия этого изображения, ниже
это покажет ваши результаты запроса в виде текста с разделителями-запятыми.
сохранить результаты запроса к файлу: Ctrl + Shift + F
Я знаю, что это немного старый, но здесь есть гораздо более простой способ...
запустите запрос с настройками по умолчанию (помещает результаты в формат сетки, если ваш не в формате сетки, см. ниже)
щелкните правой кнопкой мыши на результатах сетки и нажмите кнопку "Сохранить результаты как" и сохраните его.
Если ваши результаты не в формате сетки, щелкните правой кнопкой мыши, где вы пишете запрос, наведите указатель мыши "результаты В "и нажмите кнопку " Результаты в сетке"
хорошее Удачи!
вы можете использовать PowerShell
$AttachmentPath = "CV File location" $QueryFmt= "Query" Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath
если рассматриваемая база данных является локальной, то, вероятно, наиболее надежный способ экспорта результата запроса в CSV file (то есть дает вам наибольший контроль).
- скопировать запрос.
- в Обозревателе объектов щелкните правой кнопкой мыши на соответствующей базе данных.
- Выберите "Задачи" > > " Экспорт Данных..."
- настройте свой источник данных и нажмите кнопку "Далее".
- выберите "плоский файл" или "Microsoft Excel" как назначение.
- указать путь к файлу.
- при работе с плоским файлом, настроить по желанию. При работе с Microsoft Excel выберите " Excel 2007 "(предыдущие версии имеют ограничение строки на 64k)
- выберите "написать запрос, указывающий данные для передачи"
- вставить запрос из Шага 1.
- Нажмите кнопку Далее > > просмотр сопоставлений > > нажмите кнопку Далее > > выберите "Выполнить немедленно" > > дважды нажмите кнопку" Готово".
после прохождения этот процесс исчерпывающе, я нашел следующее, чтобы быть лучшим вариантом
Сценарий 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но, есть пара моментов:
вам нужно иметь Microsoft.ТУЗ.Oledb для.12.0 доступного поставщика. Поставщик Jet 4.0 тоже будет работать, но он древний, поэтому я использовал его вместо этого.
The .CSV-файл должен уже существовать. Если вы используете заголовки (
HDR=YES), убедитесь, что первая строка .CSV-файл представляет собой разделенный список всех поля.
основываясь на ответе 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)"."
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.
Да, все это возможно, когда у вас есть прямой доступ к серверам. Но что делать, если у вас есть только доступ к серверу с веб-сервера / сервера приложений? Ну, ситуация была такая с нами давно и решение было экспорт SQL Server в CSV.

Comments