Как экспортировать результат запроса в CSV файл в SQL Server 2008?
Экспорт результата запроса в CSV файл в SQL Server 2008
Ответ 1
- Откройте SQL Server Management Studio
- Перейдите в раздел "Инструменты" > "Параметры" > "Запрос". Результаты > SQL Server > Результаты для текста
- В крайнем правом углу есть капля вниз с названием Формат вывода
- Выберите "Заблокированные разделители" и нажмите "ОК"
Здесь полноэкранная версия этого изображения ниже
Это покажет ваши результаты запроса как текст с разделителями-запятыми.
Чтобы сохранить результаты запроса в файле: 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 (т.е. предоставляя вам максимальный контроль).
- Скопируйте запрос.
- В обозревателе объектов щелкните правой кнопкой мыши соответствующую базу данных.
- Выберите "Задачи" >> "Экспорт данных..."
- Настройте источник данных и нажмите "Далее".
- Выберите "Плоский файл" или "Microsoft Excel" в качестве места назначения.
- Укажите путь к файлу.
- Если вы работаете с плоским файлом, настройте его по желанию. При работе с Microsoft Excel выберите "Excel 2007" (в предыдущих версиях ограничение строки составляло 64 КБ)
- Выберите "Написать запрос, чтобы указать данные для передачи"
- Вставьте запрос из шага 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"
Ответ 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 установлен на вкладку.
Ответ 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)". "
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.