Как сохранить результат запроса sql в файл
Tools > Options > Query Results > SQL Server > Results to Text (or Grid if you want) > Include columns headers in the result set
Возможно, вам придется закрыть и снова открыть SSMS после изменения этой опции.
На панели инструментов редактора SQL вы можете выбрать сохранить в файл без перезапуска SSMS
Попробуйте мастер экспорта. В этом примере я выбираю целую таблицу, но вы также можете легко задать запрос:
(здесь вы также можете указать запрос)
Вам все равно нужно изменить его в Tools- > Options в строке меню, чтобы новые окна запросов использовали эти настройки по умолчанию.
Попал сюда, когда искал способ заставить SSMS правильно экранировать разделители CSV при экспорте результатов.
Но я с радостью пожертвую 100 долларов на благотворительность выбора респондентов, если кто-то может дать мне одну действительную реальную причину существования этого варианта (т.е. Фактический сценарий, где он был полезен).
В SQL Server 2014 Management Studio параметр имеет следующий вид:
Инструменты> Параметры> Результаты запроса> SQL Server> Результаты в текст> Включить заголовки столбцов в набор результатов.
Параметры, которые рекомендовалось изменить в принятом ответе @Diego, могут быть полезны, если вы хотите установить этот параметр постоянно для всех будущих сеансов запросов, которые вы открываете в SQL Server Management Studio (SSMS). Обычно это не тот случай. Кроме того, изменение этого параметра требует перезапуска приложения SQL Server Management Studio (SSMS), что не очень приятно, если у вас много несохраненных окон сеанса открытых запросов и вы находитесь в процессе отладки.
SQL Server дает очень удобную возможность изменять его для каждой сессии, что очень быстро, удобно и удобно. Я подробно описываю шаги ниже, используя окно параметров запроса:
- Щелкните правой кнопкой мыши в окне редактора запросов> Нажмите Query Options. в нижней части контекстного меню, как показано ниже:
Это. Ваш текущий сеанс будет учитывать ваши настройки с немедленным вступлением в силу без перезапуска SSMS. Кроме того, этот параметр не будет распространяться ни на один из будущих сеансов. Эффективное изменение этого параметра для каждого сеанса намного менее шумно.
Я тоже сталкиваюсь с той же проблемой. Когда я использовал правую кнопку мыши в окне запроса и выберите Параметры запроса. Но строки заголовка не отображаются в выходном файле CSV.
Затем я выхожу из системы, снова захожу и запускаю скрипт. Тогда это сработало.
В этой статье будут показаны восемь способов экспорта строк из запроса T-SQL в текстовый файл. Мы покажем следующие параметры:
Требования
Вам потребуется SQL Server, установленный с SSIS и SQL Server Data Tools (SSDT).
Начало работы
Давайте рассмотрим каждый из способов мы можем экспортировать результаты запроса.
1. Показывать результаты в файл в SSMS
В первом варианте мы настроим SSMS для отображения результатов запроса в текстовый файл. Мы будем использовать следующий скрипт с именем myscript.sql:
В SQL Server Management Studio (SSMS) отображается следующий результат:
Если вы хотите сохранить результаты в текстовом файле, вы можете сделать это в SSMS. Перейдите в Инструменты> Параметры :
Выберите вариант Результат в файл:
Создайте запрос и выполните запрос. Будет отображена возможность указать имя и путь. Мы будем вызывать результаты в файле с именем Results.rpt:
Сохранены следующие результаты:
2. SQLCMD
Используйте следующую команду в cmd:
Команда использовала файл myquery.sql, созданный ранее, а вывод сохраняется в файле myoutput.txt:
3. PowerShell
Invoke-Sqlcmd вызовет сценарий myquery.sql, созданный в начале этой статьи, и сохранит результаты в файле с именем powershelloutput. .текст. Результаты будут следующими:
4. Импорт/ Мастер экспорта в SSMS
Вы откроете Мастер импорта и экспорта SQL Server:
Мы будем экспортировать из SQL Server в плоский файл. Выберите поставщик Microsoft OLE DB в качестве источника данных:
При необходимости укажите имя сервера и информацию о подключении:
В разделе «Назначение» выберите «Место назначения плоского файла» и нажмите «Обзор», чтобы указать имя и путь к файлу:
В этом примере имя плоского файла будет exportwizard.txt:
После того, как у вас есть имя файла и путь, нажмите следующий:
Выберите вариант« Написать запрос, чтобы указать данные для передачи »:
Сохраните значения по умолчанию:
Выберите «Выполнить немедленно» для экспорта данные немедленно:
Созданный файл будет похож на этот:
5. SSIS в SSDT
Вы также можете использовать SSIS в SSDT. Этот метод аналогичен мастеру импорта/экспорта в SSMS, поскольку SSMS вызывает SSIS для импорта и экспорта данных.
Перейдите в SSDT, затем перейдите в меню «Файл»> «Новый проект» и выберите «Проект служб интеграции»:
В обозревателе решений щелкните правой кнопкой мыши Пакеты служб SSIS и выберите Импорт служб SSIS. и мастер экспорта:
Следующие шаги такие же, как в SSMS, когда мы вызываем мастер импорта/экспорта, но в конце у вас нет возможности запустить его немедленно.
Чтобы запустить пакет, нажмите Пуск:
Пакет сгенерирует текстовый файл в формате CSV.
Для этого в SSDT перетащите задачу Script:
Дважды щелкните« Задача сценария »и нажмите кнопку« Изменить сценарий »:
В скрипте в области, где говорится, добавьте сюда свой код, добавьте следующий код:
В первой строке указывается запрос T-SQL:
Во второй строке указывается информация о соединении (имя SQL Server, имя базы данных и метод аутентификации):
В третьей строке указывается путь к текстовому файлу:
Мы будем использовать соединение SQL и запрос и откройте соединение:
Структура try используется для обработки исключений. Строка с «while (reader.Read ())» используется для чтения построчно результатов SQL-запроса. myFile.WriteLine запишет в текстовый файл всю информацию из SQL Server:
Наконец, мы выберем файл и соединение с SQL Server с Reader.Close и myFile.Close:
7. Службы отчетов
В SSDT перейдите в меню «Файл»> «Новый проект» и выберите «Мастер проекта сервера отчетов»:
Укажите соединение SQL Server и базы данных . В этом примере мы подключаемся к локальному SQL Server и базе данных AdventureWorks2016CTP3:
Выбрать Тип отчета в виде таблицы:
В «Дизайн таблицы» , нажмите Finish:
Нажмите Preview и в значке Save выберите CSV (через запятую), чтобы сохранить файл с расширением csv:
8. BCP
В следующем примере для экспорта запроса используется bcp результаты в файл с именем bcp.txt. -T используется для указания того, что мы используем надежное соединение (соединение Windows), а -c используется для выполнения операции типа данных:
Выводы
Есть много других способов экспортировать результаты. Однако эти параметры вдохновят вас на использование других.
В заключение, вот несколько советов о том, когда их использовать:
5. Мастер SSIS (почти такой же, как номер 4, но мы используем SSDT вместо SSMS для создания пакета. ). Он похож на 4, но его можно настроить, и вы можете создавать действительно сложные пакеты, интегрированные с веб-службами, отправлять почту, PowerShell и многое другое. Используйте его, если вам нужно сложное решение, требующее интеграции между несколькими инструментами.
Как экспортировать результаты запроса в CSV на SQL Server
В этом кратком руководстве я покажу вам 2 метода экспорта результатов запроса в CSV в SQL Server Management Studio:
- Быстрый метод для меньшего числа записей
- Полный метод для больших наборов данных
Я также продемонстрирую, как включать заголовки столбцов при экспорте результатов.
Метод 1. Быстрый способ экспорта результатов запроса в CSV на SQL Server
Для начала запустите запрос, чтобы получить результаты.
Например, я выполнил простой запрос и получил следующую таблицу с небольшим количеством записей:
Чтобы быстро экспортировать результаты запроса, выберите все записи в вашей таблице (например, по рис. измените любую ячейку сетки, а затем используйте комбинацию клавиш Ctrl + A ):
Откройте пустой файл CSV и вставьте результаты:
Вышеупомянутый метод может быть полезен для меньшего количества записей. Однако, если вы имеете дело с гораздо большими наборами данных, вы можете рассмотреть возможность использования второго метода ниже.
Метод 2: экспорт результатов запроса для больших наборов данных
Использование В том же примере вы можете экспортировать результаты запроса в файл CSV, щелкнув правой кнопкой мыши любую ячейку в сетке и выбрав « Сохранить результаты как… »
Затем введите имя для вашего CSV-файла (например, query_results), а затем нажмите
Ваш CSV-файл будет сохранен в указанном вами месте:
И если вы откроете файл CSV, вы увидите экспортированный результаты (без заголовков столбцов):
Вы можете выполнить следующие шаги, если вам нужно включить заголовки столбцов при экспорте файла CSV в SQL Server.
Как включить заголовки столбцов при экспорте запроса результаты в CSV в SQL Server
Чтобы включить заголовки столбцов, перейдите в Инструменты , а затем выберите Параметры…
Затем нажмите Результаты запроса >> SQL Server >> Результаты в сетку ng>:
Теперь вам нужно перезапустить сервер SQL, чтобы изменения вступили в силу. .
Затем повторно запустите запрос, чтобы получить результаты:
Щелкните правой кнопкой мыши любую ячейку в самой сетке и выберите« Сохранить результаты как… »
Введите имя для вашего CSV-файла и нажмите Сохранить :
Ваш новый CSV-файл будет теперь содержат заголовки столбцов, идущие вперед:
Нам нужно записать результаты запроса SELECT в файл csv. Как это можно сделать с использованием T-SQL в SQL Server 2008 r2? Я знаю, что это можно сделать в SSIS, но по некоторым причинам у нас нет этой возможности.
Я попытался использовать предлагаемый proc в следующей статье, но когда я запускаю proc, SQL жалуется, что не может запускать sys.sp_OACreate и sys.sp_OADestroy, которые вызывается в этом proc.
Вы знаете, как мы можем включить эти компоненты или узнать лучший способ записи в файл с помощью T-SQL?
В аргументе -c указывается вывод c , в отличие от встроенного двоичного формата SQL; это значение по умолчанию имеет значения, разделенные табуляцией, но -t , изменяет поле t erminator на запятую. -T указывает проверку подлинности Windows (« t ржавое соединение»), в противном случае используйте -U MyUserName -P MyPassword .
Это не экспортирует заголовки столбцов по умолчанию. Вам нужно использовать UNION ALL для заголовков
Вот ссылка на статью . Если вы закончите использовать это, вы можете захотеть добавить -notype после Export-Csv $extractFile , чтобы избавиться от ненужного столбца в выходном файле.
Добавляя к предыдущему ответу, который помогает вам автоматизировать действие, если вам это нужно только время от времени, вы можете сделать это в Management Studio, просто щелкните правой кнопкой мыши на заголовке - Сохраните результаты как -> выберите файл .csv .
Или если вы хотите сделать это для каждого выполняемого оператора select, вы можете изменить направление вывода результатов в файл. Используйте Инструменты -> Параметры -> Результаты запроса - результаты в файл .
Другим способом, который может быть легко автоматизирован и используется SSIS, является использование функции экспорта данных Management Studio. Щелкните правой кнопкой мыши по базе данных -> Задачи -> Экспорт данных. Есть мастер с множеством опций. Вы должны выбрать исходную базу данных, пункт назначения и другие параметры. Для адресата убедитесь, что это «Плоский файл», найдите и выберите тип .csv, выберите любое форматирование, которое вам нужно, и в конце вы получите пакет SSIS, который можно сохранить локально и повторить по необходимости.
По просьбе одного из участников публикую пример запроса для записи информации в текстовый файл.
Эта хранимая процедура сначала записывает во временную таблицу содержимое будущего XML файла, а затем пишет построчно это содержимое в файл. Файл дальше обрабатывается механизмом Epicor Service Connect.
Вы можете весь кусок, начиная с
выкинуть, а ниже создаваемый курсор
заменить на свой :)
Ниже полный текст хранимой процедуры:
Список опубликованных процедур:
5 комментариев
Алексей Васильев
Алексей Васильев
Недавно столкнулся с интересной проблемой. Опишу все подробно и по порядку, может кому-то пригодится.
Итак, возникла задача, одновременно с распечаткой бумажной накладной создавать её электронную копию с записью в EDI папку.
Предложил использовать хранимую процедуру примерно следующего содержания:
Стало всё понятно. Я предложил выполнить следующий запрос примерно такого содержания:
Хочу добавиль, что пользователь ScalaUser должен существовать в базе данных master. После выполнения запроса всё заработало :)
Алексей Васильев
Попробовал воспользоваться функцией uftReadfileAsTable, опубликованной выше. Ругался разными словами :(
Не читался файл содержащий кириллические символы.
Никак не мог понять назначение трёх последних параметров в выражении
В заблуждение ввело то, что подобное выражение используется не только для чтения файла, но и для записи. Потом-таки разобрался:
1 означает ForReading (Открывает файл только для чтения),
false означает должен ли создаваться новый файл, если файл filename не существует (не должен. Именно наличие этого параметра и вводило в заблуждение, т.к. он требуется в случае открытия файла на запись, если он существует, или создания нового, если файла с таким именем нет, а мы собираемся только читать информацию из файла и в этом случае этот параметр не имеет смысла),
0 означает, что файл открывается как ASCII
А мне нужен был Unicode.
Заменил на -1 (-1 Открывает файл в кодировке Unicode, -2 Открывает файл, используя системную кодировку)
Наконец заработало :)
Алексей Васильев
Creates a specified file name and returns a TextStream object that can be used to read from or write to the file.
object.CreateTextFile(filename[, overwrite[, unicode]])
The CreateTextFile method has these parts:
Description: Required. Always the name of a FileSystemObject or Folder object.
Description: Required. String expression that identifies the file to create.
предполагает, что будет создан файл только, если его не существует, в кодировке ASCII, а если нам нужно создать файл в формате Unicode, это нужно указать явно, например, таким образом:
Читайте также: