SQL Server: экспорт запроса в формате .txt

Я пытаюсь экспортировать результаты запроса SQL Server в папку в формате .txt (это для автоматизированного задания)

Я знаю, что эквивалент в MySQL работает с INTO OUTFILE. Кто-нибудь знает лучший способ сделать это в SQL Server 2008 Management Studio?

SELECT DISTINCT RTRIM (s1.SGMNTID) AS 'AccCode',RTRIM (s1.DSCRIPTN) AS 'CodeDesc', CASE
    WHEN  s1.SGMTNUMB = '1' THEN '1' 
    WHEN s1.SGMTNUMB = '2' THEN '2'
    WHEN s1.SGMTNUMB = '3' THEN '110'
    WHEN s1.SGMTNUMB = '4' THEN '4'
    WHEN s1.SGMTNUMB = '5' THEN '120'
    END AS 'AccountType_id',
CASE WHEN s1.SGMTNUMB = '2' 
THEN LEFT(s1.SGMNTID, 2)
ELSE 'DEFAULT'
END AS 'AccGroupName'

 FROM GL40200 s1

UNION 

SELECT  REPLACE ([ACTNUMBR_1]+'-'+ [ACTNUMBR_2]+'-'+ [ACTNUMBR_3]+'-'+[ACTNUMBR_4]+'-'+    [ACTNUMBR_5],' ', '') AS 'AccCode',
 '' AS 'CodeDesc',
 '0' AS 'AccountType_id',
 'Default' AS 'AccGroupName'
FROM GL00100 a

INTO OUTFILE 'C:\Users\srahmani\verian/myfilename.txt'

Ответ 1

вы делаете это в приложении SSMS, а не в SQL. На панели инструментов выберите

Query → Results To → Results to File

Ответ 2

Другой способ - из командной строки, используя osql:

OSQL -S SERVERNAME -E -i thequeryfile.sql -o youroutputfile.txt

Это может быть использовано из файла BAT и синхронизировано пользователем Windows для аутентификации.

Ответ 3

Вы можете использовать утилиту bcp.

Чтобы скопировать результирующий набор из инструкции Transact-SQL в файл данных, используйте параметр запроса. Следующий пример копирует результат запроса в файл данных Contacts.txt. В этом примере предполагается, что вы используете проверку подлинности Windows и имеете надежное соединение с экземпляром сервера, на котором выполняется команда bcp. На Командная строка Windows введите:

bcp "<your query here>" queryout Contacts.txt -c -T

Вы можете использовать BCP, напрямую вызывая операционную команду sytstem в задании агента SQL.

Ответ 4

Вы можете использовать Windows Powershell для выполнения запроса и вывода его в текстовый файл

Invoke-Sqlcmd -Query "Выберите * из базы данных" -ServerInstance "Имя сервера \SQL2008" -Database "DbName" > c:\Users\outputFileName.txt

Ответ 5

Утилита BCP также может использоваться в виде .bat файла, но будьте осторожны с escape-последовательностями (например, кавычки "" должны использоваться вместе с) и соответствующими тегами.

.bat Пример:

C:
bcp "\"YOUR_SERVER\".dbo.Proc" queryout C:\FilePath.txt -T -c -q
-- Add PAUSE here if you'd like to see the completed batch

-q ДОЛЖЕН использоваться при наличии котировок внутри самого запроса.

BCP также может запускать хранимые процедуры, если это необходимо. Опять же, будьте осторожны: временные таблицы должны быть созданы до выполнения, иначе вам следует использовать таблицы переменных.

Ответ 6

Это довольно просто сделать, и ответ доступен в других запросах. Для тех из вас, кто это просматривает:

select entries from my_entries where id='42' INTO OUTFILE 'bishwas.txt';