Нам нужно записать результаты запроса SELECT в CSV-файл. Как это можно сделать с помощью T-SQL в SQL Server 2008 r2? Я знаю, что это можно сделать в SSIS, но по некоторым причинам у нас нет этой опции.
Я попытался использовать предложенный proc в статье ниже, но когда я запускаю proc, SQL жалуется, что не может запустить sys.sp_OACreate и sys.sp_OADestroy, которые вызываются в этом proc.
Знаете ли вы, как мы можем включить эти компоненты, или знаете какой-нибудь лучший способ записи в файл с использованием T-SQL?
Заранее спасибо.
источник
В добавление к предыдущему ответу, который помогает автоматизировать действие, если вы нуждаетесь в нем только время от времени, вы можете сделать это в Management Studio, просто щелкните правой кнопкой мыши заголовок - Сохранить результаты как -> выберите файл .csv .
Или, если вы хотите сделать это для каждого оператора select, который вы выполняете, вы можете изменить направление вывода результатов на файл. Используйте Сервис -> Параметры -> Результаты запроса - Результаты в файл .
Другой способ, который может быть легко автоматизирован и использует SSIS, заключается в использовании функции экспорта данных в Management Studio. Щелкните правой кнопкой мыши базу данных -> Задачи -> Экспорт данных. Там есть мастер с множеством вариантов. Вы должны выбрать исходную базу данных, пункт назначения и другие параметры. Для пункта назначения убедитесь, что это «Плоский файл», найдите и выберите тип .csv, выберите любой необходимый формат, и в конце вы получите пакет служб SSIS, который можно сохранить локально и повторить при необходимости.
источник
Используйте T-SQL
Но есть несколько предостережений:
источник
Низкая технология, но ...
источник
col1 + ',' + cast(col2 as varchar(10)) + ',' + col3
как имя столбца и печатает NULL повсюду.Похоже, у вас уже есть приемлемое решение, но если вы настроили db mail, вы могли бы сделать что-то вроде этого:
Если вы отправляете файл куда-нибудь по электронной почте, это может сэкономить вам несколько шагов.
источник
Это легко сделать в 3 этапа:
Напишите ваш запрос как
SELECT INTO
запрос. Это по существу экспортирует результаты вашего запроса в таблицу.Обратите внимание, эта таблица не может существовать при выполнении запроса, так как этот тип запроса хочет создать таблицу как часть выполнения.
Затем используйте SSIS для экспорта результатов этой таблицы в
.csv
. Мастер экспорта служб SSIS позволяет выбрать разделитель и т. Д. Это действительно удобно для использования | разделитель в тех случаях, когда результирующий набор содержит запятые.Щелкните правой кнопкой мыши на
DB Name > Tasks > Export Data
После завершения экспорта выполните
DROP TABLE
команду для очистки таблицы журнала.источник
Я использую MS Access DoCMD для экспорта CSV из SQL Server. Это можно сделать с помощью одной команды. База данных доступа используется только для включения команды доступа. Он работает хорошо, и в качестве дополнительного преимущества (не уверен почему) он создает schema.ini для экспортируемой таблицы.
Адам
источник
Эта процедура создаст файл CSV с выводом запроса, который вы передадите в качестве параметра. Второй параметр - это имя файла CSV, убедитесь, что вы передаете имя файла с допустимым путем записи.
Вот скрипт для создания процедуры:
источник