Как экспортировать результат запроса в CSV-файл в SQL Server 2008?Экспорт результатов запроса в CSV-файл в SQL Server 2008
ответ
- Open Management SQL Server Studio
- Перейти в раздел Инструменты> Параметры> Запрос Результаты> SQL Server> Результаты к тексту
- На крайнем правом, есть падение вниз коробка называется Output Format
- Выберите Запятая разделителями и нажмите кнопку OK
Here's a full screen version of that image, below
Это покажет ваши результаты запроса как текст с разделителями-запятыми.
Чтобы сохранить результаты запроса в файл: Ctrl + Shift + F
Я не мог найти, где его сохраняет результат, можете ли вы дать мне подсказку, где искать? – Andrey
Ответ немного вводит в заблуждение ... Когда вы нажимаете 'Ctrl + Shift + F', он меняет только режим вывода, это не влияет на результаты, если вы уже выполнили запрос. Чтобы это отразилось, вам нужно повторно запустить запрос. Когда вы запустите его в режиме «Результаты в файл», он должен запросить, где вы хотите сохранить результаты. – qJake
Должно быть в меню «Инструменты»> «Параметры»> «Результаты запроса»> «SQL Server»> «Результаты для текста» – congusbongus
Вы можете использовать QueryToDoc (http://www.querytodoc.com). Он позволяет вам писать запрос к базе данных SQL и экспортировать результаты - после выбора разделителя - в Excel, Word, HTML или CSV
Я знаю, что это немного устарело, но здесь намного проще. ..
Выполнить запрос с параметрами по умолчанию (кладет результаты в табличном формате, если ваш не находится в табличном формате, смотри ниже)
правой кнопкой мыши по результатам сетки и нажмите кнопку «Сохранить результаты, как» и сохранить его.
Если результаты не в виде сетки, щелкните правой кнопкой мыши, где вы пишете запрос, парить «Результаты To» и нажмите кнопку «Результаты по сетке»
удачи!
Решила мою проблему! – whileone
Проблема только в том, что этот метод не позволяет вам устанавливать какие-либо параметры. Например, все NULL отображаются в выходных файлах как «NULL» и т. Д. Возможно, есть способ установить это, о котором я не знаю. – Noah
@Noah Путь вокруг нулей, который я использую, для любых столбцов, которые, как вы знаете, будут пустыми, вы можете использовать 'ISNULL (NullableColumn, '') AS NullableColumn' Кажется, это работает лучше всего для меня. –
Вы можете использовать PowerShell
$AttachmentPath = "CV File location"
$QueryFmt= "Query"
Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath
Спасибо! Это было единственное предложение, которое сработало для меня. Ручки ускользают правильно – emertechie
+10 если можно. Ответьте только на то, что справляется с побегом. Чтобы запустить это, мне пришлось добавить две строки в верхней части скрипта: 'Add-PSSnapin SqlServerCmdletSnapin100' и' Add-PSSnapin SqlServerProviderSnapin100'. –
, если вы сталкиваетесь с таймаутом, добавьте ** querytimeout ** так, например. 'Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $ QueryFmt -querytimeout 600 | Export-CSV $ AttachmentPath' – Tilo
Опираясь на ответ NS, я есть сценарий 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.
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 представляет собой список с разделителями всех полей.
Да, все это возможно, если у вас есть прямой доступ к серверам. Но что, если у вас есть только доступ к серверу с сервера веб-приложений? Ну, ситуация была у нас с длинной спиной, и решение было SQL Server Export to 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> Нужно иметь офис установлен
Ошибки столкнулись
Msg 7303, уровень 16, состояние 1, строка 1 Невозможно инициализировать объект источника данных поставщика OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)». »
Msg 15281, уровень 16, состояние 1, строка 1 SQL Server заблокировали доступ к ЗАЯВЛЕНИЕ '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
Если база данных в вопросе является локальной, следующим, вероятно, самым надежным способом экспортировать результат запроса к CSV файлу (то есть, что дает вам больший контроль).
- Скопируйте запрос.
- В обозревателе объектов щелкните правой кнопкой мыши соответствующую базу данных.
- Выберите «Задачи» >> «Экспорт данных ...»
- Настройте источник данных и нажмите «Далее».
- Выберите «Плоский файл» или «Microsoft Excel» в качестве адресата.
- Укажите путь к файлу.
- Если вы работаете с плоским файлом, настройте его по желанию. При работе с Microsoft Excel, выберите «Excel 2007» (предыдущие версии имеют лимит строки в 64k)
- Выберите «Создать запрос для указания данных для передачи»
- Paste запроса с шага 1.
- нажмите кнопку Далее >> просмотреть сопоставления >> нажмите далее >> выберите «запустить сразу» >> нажмите «закончить» дважды.
После прохождения этого процесса исчерпывающе, я нашел следующее быть лучшим вариантом
PowerShell Script
$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"
, если вы столкнулись с таймаутом, добавьте ** querytimeout ** так, например. 'Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $ QueryFmt -querytimeout 600 | Экспорт-CSV $ AttachmentPath' – Tilo
MS Excel -> Data -> Новый запрос -> Из базы данных ..follow шаги
Если вы не хотите использовать Powershell, этот ответ является вариацией на большой ответ 8kB в. Единственное различие заключается в том, что вместо выбора CSV в качестве выходного формата выберите «Разграничить табуляцию». Таким образом, если в ваших данных есть запятые, они не будут пропускать ячейки в Excel. Кроме того, если у вас установлен разделитель Excel по умолчанию для вкладок, вы можете просто сделать копию всех результатов запроса SSMS (CTRL-A, CTRL-C) и вставить в Excel (нет необходимости сохранять в виде файла и импортировать в Excel):
- в SSMS Перейти Сервис> параметры> Результаты запроса> SQL Server> Результаты To Text
- формат вывода Изменить на крайний справа на Tab разделителями
- Нажмите OK
Теперь вы можете выполнить свой запрос, затем сделать CTRL-A, чтобы выбрать все результаты, затем CTRL-C, чтобы скопировать в буфер обмена, а затем переключиться на Excel 2013 (может работать и в 2007 году, не уверен) и вставить - если для разделителя по умолчанию Excel задано значение tab.
возможно дубликат [Как экспортировать данные в формате CSV с SQL Server с помощью SQLCMD?] (Http://stackoverflow.com/questions/425379/how-to-export-data-as-csv -format-from-sql-server-using-sqlcmd) –
Вам нужно, чтобы ваш разделитель экранировался? Большинство ответов до сих пор предполагают, что вы этого не делаете, что на самом деле не все, что CSV. – Nick
@Nick - обычно разделители содержатся только с строкой, и они обычно имеют кавычки вокруг них. См. Мой ответ, чтобы увидеть решение этого. http://stackoverflow.com/questions/6115054/how-to-get-export-output-in-real-csv-format-in-sql-server-managment-studio/32660037#32660037 – MacGyver