Як я можу експортувати результат запиту у файл .csv у SQL Server 2008?
Як я можу експортувати результат запиту у файл .csv у SQL Server 2008?
Відповіді:
Ось повна версія цього зображення нижче
Це покаже результати ваших запитів у тексті з обмеженими комами.
Щоб зберегти результати запиту у файл: Ctrl + Shift + F
Ctrl+Shift+F
, вона змінює лише вихідний режим, це не впливає на результати, якщо ви вже виконали запит. Для того, щоб це відобразилося, вам потрібно повторно виконати запит. Коли ви запускаєте його в режимі "Результати до файлу", він повинен підказувати, де ви хочете зберегти результати.
Я знаю, це трохи старе, але ось набагато простіший спосіб ...
Запустіть свій запит із налаштуваннями за замовчуванням (розміщує результати у форматі сітки, якщо ваш не у форматі сітки, див. Нижче)
Клацніть правою кнопкою миші на результатах сітки та натисніть «Зберегти результати як» та збережіть її.
Якщо ваші результати не у форматі сітки, клацніть правою кнопкою миші, де ви пишете запит, наведіть курсор "Результати до" та натисніть "Результати на сітку"
Зауважте, що НЕ захоплюєте заголовки стовпців!
Щасти!
Ви можете використовувати PowerShell
$AttachmentPath = "CV File location"
$QueryFmt= "Query"
Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath
Add-PSSnapin SqlServerCmdletSnapin100
і Add-PSSnapin SqlServerProviderSnapin100
.
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Install-Module -Name SqlServer
(але мені не потрібно було хапатися за ці Cmdlets). Крім того , я врятував команду в сценарій, який не працюватиме , поки я не змінив політику виконання: Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
.
RemoteSigned
політики виконання покарання буде достатньо.
Якщо база даних, про яку йдеться, локальна, наступний, мабуть, є найбільш надійним способом експорту результату запиту у файл CSV (тобто дає вам найбільше контролю).
Вичерпно пройшовши цей процес, я виявив, що найкращим є наступне
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"
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Спираючись на відповідь 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 .
Використовуйте 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 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> Потрібно встановити Office
Виникла помилка
Повідомлення 7303, рівень 16, стан 1, рядок 1 Не вдається ініціалізувати об’єкт джерела даних постачальника OLE DB "Microsoft.ACE.OLEDB.12.0" для підключеного сервера "(null)". "
Повідомлення 15281, Рівень 16, Стан 1, Рядок 1 SQL Server заблокував доступ до ПОЯСНЕННЯ "OpenRowset / OpenDatasource" компонента "Спеціальні розподілені запити", оскільки цей компонент вимкнено як частина конфігурації безпеки для цього сервера. Системний адміністратор може дозволити використовувати "Спеціальні розподілені запити" за допомогою sp_configure. Для отримання додаткової інформації про ввімкнення "Спеціальних розподілених запитів" знайдіть "Спеціальні розподілені запити" в Книгах SQL Server Online.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 0
RECONFIGURE
GO
Якщо ви не хочете використовувати Powershell, ця відповідь є варіантом великої відповіді 8kb. Єдина відмінність полягає в тому, що замість вибору CSV як вихідного формату, виберіть Tab Delimited. Таким чином, якщо у ваших даних є коми, вони не пропускають комірки в Excel. Крім того, якщо у розділі Excel встановлено роздільник за замовчуванням на вкладки, ви можете просто скопіювати всі результати запитів SSMS (CTRL-A, CTRL-C) та вставити в Excel (не потрібно зберігати як файл та імпортувати в Excel ):
Тепер ви можете виконати свій запит, потім виконати CTRL-A для вибору всіх результатів, потім CTRL-C скопіювати у буфер обміну, потім переключитися на Excel 2013 (також може працювати у 2007 році, не впевнений) та вставити - якщо вважати, що Excel за замовчуванням роздільник встановлений на табл.
Так, все це можливо, коли у вас є прямий доступ до серверів. Але що робити, якщо у вас є доступ лише до сервера з веб-сервера / додатків? Що ж, у нас така ситуація була довгою назад, і рішенням було експорт SQL Server у CSV .