8 способов экспорта результатов SQL в текстовый файл

Введение

В этой статье будут показаны восемь способов экспорта строк из запроса T-SQL в текстовый файл. Мы покажем следующие параметры:

  1. Показывает результаты в файл в SQL Server Management Studio (SSMS).
  2. SQLCMD
  3. PowerShell
  4. Мастер импорта/экспорта в SSMS
  5. Мастер SSIS (почти то же самое, что и номер 4, но мы используем SSDT вместо SSMS для создания пакет).
  6. C #
  7. SSRS
  8. BCP

Требования

Вам потребуется SQL Server, установленный с SSIS и SQL Server Data Tools (SSDT).

Начало работы

Давайте рассмотрим каждый из способов мы можем экспортировать результаты запроса.

1. Показывать результаты в файл в SSMS

В первом варианте мы настроим SSMS для отображения результатов запроса в текстовый файл. Мы будем использовать следующий скрипт с именем myscript.sql:

 USE [AdventureWorks2016CTP3] GOSELECT TOP 5 [BusinessEntityID], [NationalIDNumber], [OrganizationNode], [OrganizationLevel] FROM [HumanResources]. [Сотрудник  ] GO 

В SQL Server Management Studio (SSMS) отображается следующий результат:

Если вы хотите сохранить результаты в текстовом файле, вы можете сделать это в SSMS. Перейдите в Инструменты> Параметры :

Выберите вариант Результат в файл:

Создайте запрос и выполните запрос. Будет отображена возможность указать имя и путь. Мы будем вызывать результаты в файле с именем Results.rpt:

Сохранены следующие результаты:

2. SQLCMD

SQLCMD — это служебная программа командной строки SQL Server. Отсюда вы можете сохранить результаты в файл. Этот параметр полезен, когда вы используете пакетные файлы для автоматизации задач.

Используйте следующую команду в cmd:

 sqlcmd -ic:  sql  myquery.sql  -oc:  sql  myoutput.txt 

Команда использовала файл myquery.sql, созданный ранее, а вывод сохраняется в файле myoutput.txt:

3. PowerShell

PowerShell — чрезвычайно популярная оболочка командной строки для автоматизировать задачи. Мы можем экспортировать результаты запроса SQL Server в текстовый файл, выполнив следующие командлеты:

 Invoke-Sqlcmd -InputFile "C:  sql  myquery.sql" |  Out-File -filePath "C:  sql  powershelloutput.txt" 

Invoke-Sqlcmd вызовет сценарий myquery.sql, созданный в начале этой статьи, и сохранит результаты в файле с именем powershelloutput. .текст. Результаты будут следующими:

4. Импорт/ Мастер экспорта в SSMS

В SSMS при щелчке правой кнопкой мыши по базе данных. Есть возможность импортировать или экспортировать данные. Перейдите в «Задачи»> «Экспорт данных»:

Вы откроете Мастер импорта и экспорта SQL Server:

Мы будем экспортировать из SQL Server в плоский файл. Выберите поставщик Microsoft OLE DB в качестве источника данных:

При необходимости укажите имя сервера и информацию о подключении:

В разделе «Назначение» выберите «Место назначения плоского файла» и нажмите «Обзор», чтобы указать имя и путь к файлу:

В этом примере имя плоского файла будет exportwizard.txt:

После того, как у вас есть имя файла и путь, нажмите следующий:

Выберите вариант« Написать запрос, чтобы указать данные для передачи »:

Укажите запрос файла myquery.sql (используется в других методах) и нажмите синтаксический анализ, чтобы убедиться, что запрос в порядке. Должно быть отображено сообщение, указывающее, что инструкция действительна:

Сохраните значения по умолчанию:

Выберите «Выполнить немедленно» для экспорта данные немедленно:

Созданный файл будет похож на этот:

5. SSIS в SSDT

Вы также можете использовать SSIS в SSDT. Этот метод аналогичен мастеру импорта/экспорта в SSMS, поскольку SSMS вызывает SSIS для импорта и экспорта данных.

Перейдите в SSDT, затем перейдите в меню «Файл»> «Новый проект» и выберите «Проект служб интеграции»:

В обозревателе решений щелкните правой кнопкой мыши Пакеты служб SSIS и выберите Импорт служб SSIS. и мастер экспорта:

Следующие шаги такие же, как в SSMS, когда мы вызываем мастер импорта/экспорта, но в конце у вас нет возможности запустить его немедленно.

Чтобы запустить пакет, нажмите Пуск:

Пакет сгенерирует текстовый файл в формате CSV.

6. C #

Вы можете экспортировать из SQL Server в текстовый файл, используя C #. Вы также можете выполнить аналогичную задачу с помощью Visual Basic. В этом примере мы будем использовать задачу Script, включенную в SSDT. Эта опция очень полезна, если вы пишете код и вам нужно интегрировать эту задачу в код.

Для этого в SSDT перетащите задачу Script:

Дважды щелкните« Задача сценария »и нажмите кнопку« Изменить сценарий »:

В #region Namespaces добавьте System.IO и Data.SqlClient . Sysem.IO используется для записи информация в файл (в данном случае это текстовый файл) и Data.SqlClient используется для подключения к SQL Server:

В скрипте в области, где говорится, добавьте сюда свой код, добавьте следующий код:

//ЗАДАЧИ: Добавьте сюда свой код строка  query = "ВЫБРАТЬ ТОП 5 [BusinessEntityID], [NationalIDNumber], [OrganizationNode], [OrganizationLevel] FROM [HumanResources]. [Employee]"; string connectionSql = "Server = (local); Database = AdventureWorks2016CTP3; Integrated Security = true»  ; StreamWriter myFile = new StreamWriter (@ "c:  sql  fileCSharp.txt"); using (SqlConnection connection = new SqlConnection (connectionSql)) {команда SqlCommand = new SqlCommand (запрос, соединение); connection.Open (); Sql  Читатель DataReader = command.ExecuteReader ();  попробуйте {while (reader.Read ()) {myFile.WriteLine (String.Format ("{0}, {1}, {2}, {3}", reader ["BusinessEntityID"], reader ["NationalIDNumber"]  , reader ["OrganizationNode"], reader ["OrganizationLevel"]));  }} catch (Exception ex) {MessageBox.Show (ex.ToString ());  Dts.TaskResult = (int) ScriptResults.Failure;  } наконец {reader.Close ();  myFile.Close ();  }} 

В первой строке указывается запрос T-SQL:

 string query = "SELECT TOP 5 [BusinessEntityID], [NationalIDNumber], OrganizationNode],  [OrganizationLevel] FROM [HumanReources] [Employee] "; 

Во второй строке указывается информация о соединении (имя SQL Server, имя базы данных и метод аутентификации):

 string connectionSql = "Server = (local); Database = AdventureWorks2016CTP3; Integrated Security = true"; 

В третьей строке указывается путь к текстовому файлу:

 StreamWriter myFile = new StreamWriter (@ "c:  sql  fileCSharp.txt"); SqlCommand command = new SqlCommand (query, connection); 

Мы будем использовать соединение SQL и запрос и откройте соединение:

 using (SqlConnection connection = new SqlConnection (connectionSql)) {SqlCommand command = new SqlCommand (query, connection);  connection.Open () 

Структура try используется для обработки исключений. Строка с «while (reader.Read ())» используется для чтения построчно результатов SQL-запроса. myFile.WriteLine запишет в текстовый файл всю информацию из SQL Server:

 try {while (reader.Read ()) {myFile.WriteLine (String.  Формат ("{0}, {1}, {2}, {3}", reader ["BusinessEntityID"], reader ["NationalIDNumber"], reader ["OrganizationNode"], reader ["OrganizationLevel"]));  }} 

«Catch» используется для перехвата ошибок исключения. Это используется для обработки ошибок. Окно сообщения. Show покажет ошибку, а Dts.TaskResult покажет ошибку красным цветом, если она не удалась. Этот код используется, когда пакет генерирует ошибку исключения.

Наконец, мы выберем файл и соединение с SQL Server с Reader.Close и myFile.Close:

 catch (Exception ex) {MessageBox.Show (например, ToString ());  Dts.TaskResult = (int) ScriptResults.Failure;} наконец {reader.Close ();  myFile.Close ();} 

7. Службы отчетов

Другой вариант — создать отчет в службах отчетов SQL Server и сохранить его как CSV. Службы Reporting Services позволяют сохранять отчеты в форматах PDF, Excel, XML, MHTML, Word, CSV, PowerPoint и TIFF. Если презентация важна, лучше всего подходят службы Reporting Services.

В SSDT перейдите в меню «Файл»> «Новый проект» и выберите «Мастер проекта сервера отчетов»:

Откроется мастер приветствия. Нажмите «Далее»:

Укажите соединение SQL Server и базы данных . В этом примере мы подключаемся к локальному SQL Server и базе данных AdventureWorks2016CTP3:

Укажите запрос:

Выбрать Тип отчета в виде таблицы:

В «Дизайн таблицы» , нажмите Finish:

Нажмите Preview и в значке Save выберите CSV (через запятую), чтобы сохранить файл с расширением csv:

8. BCP

BCP — это программа массового копирования, которая поставляется с SQL Server. Он используется для импорта данных из файла данных в SQL Server или из SQL Server в файл данных. Это очень быстрый вариант. Используйте его, если у вас миллионы строк и вам нужно использовать командную строку или если ее легко вызвать из вашей программы или скрипта.

В следующем примере для экспорта запроса используется bcp результаты в файл с именем bcp.txt. -T используется для указания того, что мы используем надежное соединение (соединение Windows), а -c используется для выполнения операции типа данных:

 bcp "SELECT TOP 5 [BusinessEntityID], [NationalIDNumber  ], [OrganizationNode], [OrganizationLevel] ОТ AdventureWorks2016CTP3. [HumanResources]. [Сотрудник] WITH (NOLOCK) "queryout c:  sql  bcp.txt -c -T 

Выводы

Есть много других способов экспортировать результаты. Однако эти параметры вдохновят вас на использование других.

В заключение, вот несколько советов о том, когда их использовать:

1. Назначение SSMS для файла вариант — это самый простой вариант. Используется, если вам не нужно ничего автоматизировать и вы сразу получаете только один текстовый отчет.

2. SQLCMD — используйте его, когда у вас есть командный файл или если вы используете командную строку для автоматизации нескольких задания.

3. PowerShell — используйте его, когда вы автоматизируете задачи с помощью PowerShell или когда используете инструменты для вызова сценариев PowerShell.

4. Мастер импорта/экспорта в SSMS — используйте его, когда у вас есть миллионы строк для копирования файлы. Это очень быстрый вариант, специализирующийся на экспорте и импорте данных из нескольких источников.

5. Мастер SSIS (почти такой же, как номер 4, но мы используем SSDT вместо SSMS для создания пакета. ). Он похож на 4, но его можно настроить, и вы можете создавать действительно сложные пакеты, интегрированные с веб-службами, отправлять почту, PowerShell и многое другое. Используйте его, если вам нужно сложное решение, требующее интеграции между несколькими инструментами.

6. C # — используйте его, когда у вас есть код для других задач и вам необходимо интегрироваться с другими строками кода на C #.

7. SSRS — SSRS полезен для создания красивого настраиваемого отчета. Используйте его, когда презентация важна.

8. BCP — это очень быстрый вариант. Используйте его для больших объемов данных.

Ссылки

  • Задача сценария SSIS
  • Руководства по службам Reporting Services
  • Решения 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-файл будет теперь содержат заголовки столбцов, идущие вперед:

Оцените статью
logicle.ru
Добавить комментарий