Запись результата выбора в CSV-файл
Нам нужно записать результаты запроса SELECT в CSV-файл. Как это можно сделать с помощью T-SQL в SQL Server 2008 r2? Я знаю, что это можно сделать в SSIS, но по некоторым причинам у нас нет этой опции.
Я попытался использовать предложенный proc в статье ниже, но когда я запускаю proc, SQL жалуется, что не может запустить sys.sp_OACreate и sys.sp_OADestroy, которые вызываются в этом proc.
Знаете ли вы, как мы можем включить эти компоненты, или знаете какой-нибудь лучший способ записи в файл с использованием T-SQL?
В -c аргумент определяет гр haracter производства, в отличие от родного двоичного формата в SQL; это по умолчанию значения , разделенные табуляцией, но -t , изменяет поле т erminator к запятой. -T Аутентификация определяет для Windows ( « т проржавели соединение»), в противном случае использовать -U MyUserName -P MyPassword .
По умолчанию заголовки столбцов не экспортируются. Вам нужно использовать UNION ALL для заголовков
Вот ссылка на статью . Если вы в конечном итоге используете это, вы можете добавить -notype после, Export-Csv $extractFile чтобы избавиться от ненужного столбца в выходном файле.
В добавление к предыдущему ответу, который помогает автоматизировать действие, если вы нуждаетесь в нем только время от времени, вы можете сделать это в Management Studio, просто щелкните правой кнопкой мыши заголовок — Сохранить результаты как -> выберите файл .csv .
Или, если вы хотите сделать это для каждого оператора select, который вы выполняете, вы можете изменить направление вывода результатов на файл. Используйте Сервис -> Параметры -> Результаты запроса — Результаты в файл .
Другой способ, который может быть легко автоматизирован и использует SSIS, заключается в использовании функции экспорта данных в Management Studio. Щелкните правой кнопкой мыши базу данных -> Задачи -> Экспорт данных. Там есть мастер с множеством вариантов. Вы должны выбрать исходную базу данных, пункт назначения и другие параметры. Для пункта назначения убедитесь, что это «Плоский файл», найдите и выберите тип .csv, выберите любой необходимый формат, и в конце вы получите пакет служб SSIS, который можно сохранить локально и повторить при необходимости.
Как сохранить вывод запроса MySQL в excel или.файл txt? [дубликат]
даже если можно хранить данные только в .txt файл, все будет хорошо.
2 ответов
MySQL предоставляет простой механизм для записи результатов выбора заявление в текстовый файл на сервере. Использование расширенных опций номенклатура INTO OUTFILE, можно создать запятую разделенное значение (CSV), которое можно импортировать в электронную таблицу применение как OpenOffice или Excel или любое другое applciation которое принимает данные в формате CSV.
учитывая запрос, такой как
, который возвращает три столбца данных, результаты могут быть помещены в файл / tmo / orders.txt с помощью запроса:
это создаст файл, разделенный вкладками, каждая строка в своей собственной строке. К изменить это поведение, можно добавить модификаторы запрос:
в этом примере каждое поле будет заключено в «двойные кавычки», поля будут разделены запятыми, и каждая строка будет быть выход на новая строка, разделенная новой строкой (\n). Пример вывода этой команды будет выглядеть так:
имейте в виду, что выходной файл не должен существовать, и что пользователь MySQL работает как имеет разрешения на запись в каталог MySQL пытается записать файл.
синтаксис
или вы можете попробовать это тоже
вы можете попробовать выполнить запрос из вашего локальный клиент и перенаправить выходные данные в локальный файл назначения;
8 способов экспорта результатов SQL в текстовый файл
В этой статье будут показаны восемь способов экспорта строк из запроса T-SQL в текстовый файл. Мы покажем следующие параметры:
- Показывает результаты в файл в SQL Server Management Studio (SSMS).
- SQLCMD
- PowerShell
- Мастер импорта/экспорта в SSMS
- Мастер SSIS (почти то же самое, что и номер 4, но мы используем SSDT вместо SSMS для создания пакет).
- C #
- SSRS
- BCP
Требования
Вам потребуется SQL Server, установленный с SSIS и SQL Server Data Tools (SSDT).
Начало работы
Давайте рассмотрим каждый из способов мы можем экспортировать результаты запроса.
1. Показывать результаты в файл в SSMS
В первом варианте мы настроим SSMS для отображения результатов запроса в текстовый файл. Мы будем использовать следующий скрипт с именем myscript.sql:
В SQL Server Management Studio (SSMS) отображается следующий результат:

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

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

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

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

2. SQLCMD
SQLCMD — это служебная программа командной строки SQL Server. Отсюда вы можете сохранить результаты в файл. Этот параметр полезен, когда вы используете пакетные файлы для автоматизации задач.
Используйте следующую команду в cmd:
Команда использовала файл myquery.sql, созданный ранее, а вывод сохраняется в файле myoutput.txt:

3. PowerShell
PowerShell — чрезвычайно популярная оболочка командной строки для автоматизировать задачи. Мы можем экспортировать результаты запроса SQL Server в текстовый файл, выполнив следующие командлеты:
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.
Вы можете экспортировать из SQL Server в текстовый файл, используя C #. Вы также можете выполнить аналогичную задачу с помощью Visual Basic. В этом примере мы будем использовать задачу Script, включенную в SSDT. Эта опция очень полезна, если вы пишете код и вам нужно интегрировать эту задачу в код.
Для этого в SSDT перетащите задачу Script:

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

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

В скрипте в области, где говорится, добавьте сюда свой код, добавьте следующий код:
В первой строке указывается запрос T-SQL:
Во второй строке указывается информация о соединении (имя SQL Server, имя базы данных и метод аутентификации):
В третьей строке указывается путь к текстовому файлу:
Мы будем использовать соединение SQL и запрос и откройте соединение:
Структура try используется для обработки исключений. Строка с «while (reader.Read ())» используется для чтения построчно результатов SQL-запроса. myFile.WriteLine запишет в текстовый файл всю информацию из SQL Server:
«Catch» используется для перехвата ошибок исключения. Это используется для обработки ошибок. Окно сообщения. Show покажет ошибку, а Dts.TaskResult покажет ошибку красным цветом, если она не удалась. Этот код используется, когда пакет генерирует ошибку исключения.
Наконец, мы выберем файл и соединение с SQL Server с 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 используется для выполнения операции типа данных:
Выводы
Есть много других способов экспортировать результаты. Однако эти параметры вдохновят вас на использование других.
В заключение, вот несколько советов о том, когда их использовать:
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. Быстрый способ экспорта результатов запроса в 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-файл будет теперь содержат заголовки столбцов, идущие вперед: