Как я могу экспортировать результат запроса в файл .csv в SQL Server 2008?
sql-server-2008
Золото
источник
источник
Ответы:
Вот полноэкранная версия этого изображения ниже
Это покажет результаты вашего запроса в виде текста, разделенного запятыми.
Чтобы сохранить результаты запроса в файл: Ctrl + Shift + F
источник
Ctrl+Shift+F
, он меняет только режим вывода, это не влияет на результаты, если вы уже выполнили запрос. Чтобы это отразилось, вам необходимо повторно запустить запрос. Когда вы запустите его в режиме «Результаты в файл», он предложит вам указать, где вы хотите сохранить результаты.Я знаю, что это немного устарело, но вот способ намного проще ...
Запустите свой запрос с настройками по умолчанию (результаты помещаются в формате сетки, если ваш запрос не в формате сетки, см. Ниже)
Щелкните правой кнопкой мыши результаты сетки, выберите «Сохранить результаты как» и сохраните их.
Если ваши результаты не в формате сетки, щелкните правой кнопкой мыши в том месте, где вы пишете запрос, наведите указатель мыши на «Результаты в» и нажмите «Результаты в сетку».
Имейте в виду, что вы НЕ записываете заголовки столбцов!
Удачи!
источник
Вы можете использовать PowerShell
источник
Add-PSSnapin SqlServerCmdletSnapin100
иAdd-PSSnapin SqlServerProviderSnapin100
.Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Install-Module -Name SqlServer
(но не нужно было подключать эти командлеты). Кроме того , я спас команду в сценарий, который не будет работать , пока я не изменил политику выполнения:Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
.RemoteSigned
будет достаточно политики исполнения.Если рассматриваемая база данных является локальной, то, вероятно, наиболее надежный способ экспортировать результат запроса в файл CSV (то есть предоставить вам наибольший контроль) является, вероятно, следующим .
Сценарий PowerShell
Запустите PowerShell от имени администратора
источник
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
MS Excel -> Данные -> Новый запрос -> Из базы данных .. выполните следующие действия.
источник
Основываясь на ответе 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 command-let.
источник
Используйте 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 должен уже существовать. Если вы используете headers (
HDR=YES
), убедитесь, что первая строка файла .CSV представляет собой список всех полей с разделителями.источник
Использование собственной техники 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 Quoted верен.
Необходимо, чтобы 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 заблокировал доступ к ЗАЯВЛЕНИЮ «OpenRowset / OpenDatasource» компонента «Специальные распределенные запросы», поскольку этот компонент отключен как часть конфигурации безопасности для этого сервера. Системный администратор может включить использование «Ad Hoc Distributed Queries» с помощью процедуры sp_configure. Для получения дополнительной информации о включении «Ad Hoc Distributed Queries» найдите «Ad Hoc Distributed Queries» в электронной документации по SQL Server.
EXEC sp_configure 'show advanced options', 1 RECONFIGURE GO EXEC sp_configure 'ad hoc distributed queries', 0 RECONFIGURE GO
источник
Если вы не хотите использовать Powershell, этот ответ представляет собой вариант отличного ответа 8 КБ. Единственное отличие состоит в том, что вместо выбора CSV в качестве формата вывода выберите с разделителями табуляции. Таким образом, если в ваших данных есть запятые, ячейки в Excel не будут пропущены. Кроме того, если у вас установлен разделитель Excel по умолчанию на вкладки, вы можете просто скопировать все результаты запроса SSMS (CTRL-A, CTRL-C) и вставить в Excel (нет необходимости сохранять как файл и импортировать в Excel. ):
Теперь вы можете выполнить свой запрос, затем нажать CTRL-A, чтобы выбрать все результаты, затем CTRL-C, чтобы скопировать в буфер обмена, затем переключиться на Excel 2013 (может работать и в 2007 году, не уверен) и вставить - при условии, что Excel по умолчанию разделитель установлен на табуляцию.
Изображение экрана параметров запроса SSMS
источник
Здесь стоит упомянуть еще один метод:
SQLCMD -S SEVERNAME -E -Q "SELECT COLUMN FROM TABLE" -s "," -o "c:\test.csv"
ПРИМЕЧАНИЕ: я не вижу, чтобы какой-либо сетевой администратор разрешил вам запускать сценарии PowerShell.
источник
Надеюсь, 10 лет не слишком поздно, я использовал это в планировщике Windows;
Он открывает команду sql .exe и запускает сценарий, разработанный для команды sql. Командный сценарий sql очень прост в использовании, выполнив несколько поисков в Google, проб и ошибок. Вы можете видеть, что он выбирает базу данных, определяет местоположение вывода и выполняет процедуру. Процедура - это просто запрос, выбирающий, какие строки и столбцы отображать из таблицы в базе данных.
источник
Да, все это возможно, когда у вас есть прямой доступ к серверам. Но что, если у вас есть доступ к серверу только с веб-сервера / сервера приложений? Что ж, ситуация была такая у нас давно, и решением было экспорт SQL Server в CSV .
источник