Как сохранить результат запроса sql в файл

Обновлено: 05.07.2024

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 дает очень удобную возможность изменять его для каждой сессии, что очень быстро, удобно и удобно. Я подробно описываю шаги ниже, используя окно параметров запроса:

  1. Щелкните правой кнопкой мыши в окне редактора запросов> Нажмите 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. Быстрый метод для меньшего числа записей
  2. Полный метод для больших наборов данных

Я также продемонстрирую, как включать заголовки столбцов при экспорте результатов.

Метод 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, который можно сохранить локально и повторить по необходимости.

Create Text File

По просьбе одного из участников публикую пример запроса для записи информации в текстовый файл.
Эта хранимая процедура сначала записывает во временную таблицу содержимое будущего 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, это нужно указать явно, например, таким образом:

Читайте также: